p指向a的第一个位置a[0],而a默认的也是a[0],p每次加1就是a1,a2递增,p-a计算的是此时p所指向a的位置和a0的距离
int a[10]定义了一个10个int值长度的数组,那么a既是数组名,同时本质上也是数组的首地址,或者说是数组第一个元素的地址;并且C 语言的数组名是不能赋值的,也就是a永远指向数组的首地址。p = a,因为p是一个int型的指针,因此此处p初始化指向了数组a的首地址。后面p++,就是p = p+1,这...
程序定义了一个3行4列的二维数组a,p是指向数组首地址的指针,里面方数组首地址,a[0]是第0行的地址,二维数组不是可以看作元素都是一维数组的一位数组么,所以a[0]也是数组元素a[0][0]的地址,p-a[0] 就是看p所指向的数组元素的地址跟a[0][0] 的位移,12的地址正好是p+11,for循环就...
a是数组首地址(具体数值由计算机分配),p-a<10,表示p相对于a的偏移要小于10个元素。p++一次时,p-a=1,p再++一次时,p-a=2,依次类推。
P的初始值是p=a【0】+0;所以每四个就有p-a【0】=x(4的倍数)所以到第四个第八个 第十二个就换一次行
p 是一个结构体或者共用体类型数据的指针。p->a表示访问该指针上,名为a的数据成员。等效于(*p).a
->指针操作符的优先级非常高,于是*p->a就是*(p->a),取得指针p指向的结构体的成员a(也是指针)指向的第一个元素。p->a是取得p指向结构体的成员a,等价于(*p).a
比如在一个结构体中,struct a { //成员 int a;};int main(){ struct a xx;struct a *p=&xx;printf("%d\n ",p->a);return 0;} 如上->这个符号就是取成员运算符,结构体中的成员.其他取成员的方法还有 xx.a或者(*p).a。
p. p是类的对象,点后面要跟类中的元素,这样就完成了类里面元素的调用,元素可以是变量也可以是函数。p->是传地址,比如说有另一个变量a,你p->a就把p的地址也给a了
a和p是变量,&a和*p是表达式,1和0x1000是常量 a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1...