说明:
1)一维数组指针表示方法 int *p = a 而非 int *p = &a
也可int *p = &a[0]表示
2)p + 1 或a + 1表示的是指向下一个地址
#include <stdio.h>
int main(int argc, const char * argv[])
{
// insert code here...
int a[4]={1,2,3,4};
printf("a[0] = %p\n",&a[0]);
printf("a[1] = %p\n",&a[1]);
printf("a[2] = %p\n",&a[2]);
//定义数组指针,
int *p = a;//p = a
//取地址
printf("p = %p\n",p);//指向a[0];
printf("p + 1 = %p\n",p + 1);//p + 1指向a[1]; = 0x7fff5fbff874
printf("a + 1 = %p\n",a + 1);//a + 1指向a[1]; = 0x7fff5fbff874
//取内容
printf("*(p + 1) = %d\n",*(p + 1));//*(p + 1)指向a[1]的值; =2
printf("*(a + 1) = %d\n",*(a + 1));//*(a + 1)指向a[1]的值; =2
//
printf("*p++ = %d\n", *p++);//=1;
printf("*p= %d\n", *p); // =2;
//使用数组指针遍历数组
int *pp = a;
for (int i = 0; i < 4; i ++) {
printf("*pp++ = %d\n", *pp++);
}
printf("\n");
return 0;
}
结论:
引用一个数组元素,可以使用二种方法:
1)下标法 ,a[i];
2)指针法,(a+1) 或 (p+1)
3) a是常量 (a++)错误, p是变量(p++)正确