给一个指针加1表示要让指针指向下一个变量,也就是在地址值上加一个sizeof(指针所指的类型),例如:
int a[10];
int *p=a;
*(p+1)=a[1];
*(p+n)=====ac[n]
同理:这些指针运算可以对指针做:
1.给指针加减一个整数(减就是往前移一位)
2.递增递减(++/--)
3.两个指针相减(其实就是两个指针的差值/sizeof)
指针可以进行加减运算,也可以进行比较(比较他们在内存中的地址大小<,<=,==,>,>=,!= a[0]<a[5] 因为数组中单元的地址是递增排列的),但是不能乘除,指针的乘除没有意义
下面的代码为了看起来更加直观(关于指针加减运算):
#include <stdio.h> int main() { char ac[]={0,1,2,3,4,5,}; char *p=ac; char *p1=&ac[5]; printf("p =%p\n",p); //p =000000000062FE00 printf("p+1=%p\n",p+1); //p+1=000000000062FE01 printf("*(p+1)=%d\n",*(p+1)); //*(p+1)=1 printf("p1-p=%d\n",p1-p); //p1-p=5 指的是ac[5]和ac[0]之间能放几个这样类型的东西 int ai[]={0,1,2,3,4,}; int *q=ai; printf("q =%p\n",q); //q =000000000062FDE0 printf("q+1=%p\n",q+1); // q+1=000000000062FDE4 printf("*(q+1)=%d\n",*(q+1)); //*(q+1)=1 return 0; }
标签:ac,p1,运算,int,C语言,printf,指针 From: https://www.cnblogs.com/vv-77/p/17325227.html