首先数组(a[10])的名字就代表一个地址,是数组第一个元素的地址,即&a[0];
int * p;
p=a;就是将指针指向数组a的第一个元素;
或者int * p=a 与int * p=&a[0]是一样的;
p+1的意思不是将地址直接加1,而是代表同一数组中下一个元素的地址,即&a[1],也可以用a+1表示。所以*(p+1)=*(a+1)=a[1];同理1换成字母 i来表示也是可以的。(a是常量,p是变量)。
注意: 不要混淆了*号的作用
在声明一个指针变量时,*号的作用只是表示我要创建一个指针变量:
int *p;
而在之后的程序中,当我们写:
printf("%d\n", *p);
这里的*号的作用不是说“我要创建一个指针变量”,而是“取得指针变量p储存的地址所指向的变量的值”
在声明一个指针变量时,*号的作用只是表示我要创建一个指针变量:
int *p;
而在之后的程序中,当我们写:
printf("%d\n", *p);
这里的*号的作用不是说“我要创建一个指针变量”,而是“取得指针变量p储存的地址所指向的变量的值”