int *p;int a[5]; p = a //类型匹配
int *p;int a[5];p = &a //类型不匹配
a 和 &a[0]都是数组第一个元素的首地址,类型都是int *;&a是数组的首地址,是一个数组指针,类型是int (*)[5]。
指针类型如何决定了指针如何参与运算?
int *p ,p+1实际上是地址+sizeof(int);
char *p,p+1是地址+sizeof(char);
这样子做是为了让指针指向下一个元素(不希望错位)
int *p;int a[5]; p = a //类型匹配
int *p;int a[5];p = &a //类型不匹配
a 和 &a[0]都是数组第一个元素的首地址,类型都是int *;&a是数组的首地址,是一个数组指针,类型是int (*)[5]。
指针类型如何决定了指针如何参与运算?
int *p ,p+1实际上是地址+sizeof(int);
char *p,p+1是地址+sizeof(char);
这样子做是为了让指针指向下一个元素(不希望错位)