指针加一个整数,结果是另一个指针,问题是,这个新的指针指向哪里呢? 会是这种指针类型的内部指针吗?
其实,当一个指针和整数进行算术运算的时候,整数在执行加法运算前始终会根据类型大小进行调整,即整数值和“指针类型的大小”相乘,比如:float占据4字节,那一个float型指针+3, 这个调整就是原来的float型指针+ 3*4。
指针+3并不是3个字节,而是3个float的大小。
这样做的好处就是不依赖指针的类型,即一个指向char的指针,p+1就是指向下一个char,如果p指向float型指针,那p+1就是指向下一个float。
1、算术运算:
C指针的算术运算只限于2种形式:
(一)、指针 ± 整数
适用于2种情况:
(1)指向数组中某个元素的指针。
数组中元素存储于连续的内存位置中,后面元素的地址大于前面元素的地址,因此,对指针+1使它指向下一个元素,+5使其向右移动5个元素的位置;-3就是使它左移3个元素的位置。
当对指针执行加法或者减法之后如果指针所处的位置 在数组第一个元素前 或者 数组最后一个元素的后面,那其效果就是未定义的。
但指针指向最后一个元素后面的那个位置是合法的,但不能间接访问。
示例:初始化数组,将数组所以元素都初始化为0。
#define N_VA