int a[10]={1,5,6,7,8,1,2,3,4,5};
int p,i;
p=a;
for(i=0;i<10;i++)
printf("%d",(p+i));
请问:1.p=a,指的是什么意思?是把a[0]的地址给p吗(为什么不是p=&a的形式)?
2.我们不是只定义了一个指针吗(就是*p)?为什么在for循环中可以多次循环?
这里的a是数组,是引用类型,存放的是数组的开始地址
p=a;应该是不对的吧,不能把int * 类型赋值给int吧,除非是int * p;
如果是int p;的话 p=a;就是把p指向数组的开始地址。
然后可以通过p取到数组的值,
数组每个元素的地址是连续的,所以可以通过p+1移动到下一个地址,*(p+1)就能取到数组下一个位置的值。
直接输出p+1的话输出的应该是一个地址吧。
不知道我理解的对不对,错的话勿喷。
今天啃书,补充一下,p=a其实是把a[ ]的基地址赋给p,a不是常量,而是数组...
a并不是变量
a[0]的地址按理应是&a[0],而不是&a(&a是别的语义,但是感觉是一种错误的边缘),
指针可以做加减算术。