C中有自增运算符++,表示将变量自增1。自增运算符同样在指针中使用。递增指向数组元素的指针可以让该指针移动至数组的下一个元素。
如:ptr++相当于将ptr的值加4(假设定义的是int类型,占4个字节)。看如下的示例
#include<stdio.h>
int main(void){
int arr[5] = {100, 200, 300, 400, 500};
int *ptr1;
ptr1 = &arr[0];
printf("ptr1 = %p\n", ptr1);
printf("ptr1指向的值:%d\n",*ptr1);
printf("arr[0] = %d\n",arr[0]);
ptr1++;
printf("-----ptr1++后的结果-----\n");
printf("ptr1 = %p\n", ptr1);
printf("ptr1指向的值:%d\n",*ptr1);
printf("arr[1] = %d\n",arr[1]);
return 0;
}
输出结果
ptr1 = 000000bd469ffa30
ptr1指向的值:100
arr[0] = 100
-----ptr1++后的结果-----
ptr1 = 000000bd469ffa34
ptr1指向的值:200
arr[1] = 200
可以看到,ptr1存储的地址是000000bd469ffa30,也就是ptr1指向的是arr[0]。
自增之后
ptr1存储的地址000000bd469ffa34,增加了4,验证了本例中ptr1++相当于将ptr的值加4(ptr1是int类型)。自增之后指向的是arr[1]。
图示总结