1、[]里面不能写变量,只能写常量,或者写宏,宏是在编译0和1之前运行的,牵扯的跟这个关系不大,目前一般[]里不写值的灵活性更大。
2、int *p = a; 这里是把a的地址赋值给了p,a是数组名,可以省略&
3、*(p+3) :这里p是存储的a的地址,也就是a[0]这个位置,p+3 就是在p的基础上往右移三位,加上括号就是优先计算括号里的,再把这个地址对应的值取出来就是7这个位置的,不加括号就先把这个地址对应的值取出来再加上数字三,就是地址位置 也是a[0]这个位置为1+3=4
#include <stdio.h>
int main()
{
int a[]={1,3,5,7,9},*p=a;
printf("%d\n", *(p+3)); //先计算括号里的算出来的地址再取值
printf("%d\n", *p+3);//先取值后计算
return 0;
}
|