-
数组名:一维数组名是个指针常量,它存放的是一维数组第一个元素的地址, 它的值不能被改变(不是数组的第一个值不能改,而是数组第一个元素的地址不能改),一维数组名指向的是数组的第一个元素
-
下标和指针的关系 a[i] <=> *(a+i)
-
假设指针变量的名字为p。则p+i的值是p+i*(p所指向的变量所占的字节数)
注:在程序中这样写的也是对的
int a[5] = { 2,4,6,8,10 };
int* p = &a;
printf("%d\n",*(p + 1));
printf("%d\n", a);//元素2的地址
printf("%d\n", p+1);//元素4的地址
printf("%d\n", a[2]);//6
printf("%d\n", *(a + 2));//6
printf("%d\n", *(2 + a));//6
printf("%d\n", 2[a]);//6,这种表示也对,但不推荐
输出截图:
-
指针变量的运算:指针变量不能相加,不能相乘,不能相除 如果两指针变量属于同一数组,则可以相减 指针变量可以加减一整数,前提是最终结果不能超过指针允许指向的范围 p+i的值是p+i(p所指向的变量所占的字节数) p-i的值是p-i(p所指向的变量所占的字节数) p++ <=> p+1 p-- <=> p-1