mlfk.net
当前位置:首页 >> 对于int A[ ]={1:2:3:4:5:6}:p;p=A;*(p 3)=2;则*p;... >>

对于int A[ ]={1:2:3:4:5:6}:p;p=A;*(p 3)=2;则*p;...

标题中你把原题写错了,数组元素间用逗号分隔,那来那多冒号? p = a ; //指明p指向a的首地址,a数组和p为int型,所以p偏移一个单位就是移动4个字节(一般情况下)的偏移量。 p现在指向a的首地址,所以*p的值是1,*p相当a[0]。 *(p 3)相当a[3],...

a+0指向1,a+1指向2,a+2指向3,*p=a+2;那么p指向3,p[2]就是p+2指向的数据 p+0指向3,p+1指向4,p+2指向5,所以p[2]的值是5

main() { int a[]={1,2,3,4,5,6}; int *p; p=a; //p指向的数组a printf("%d ",*p); //*p指的是数组a的首地址的数据就是数组的第一个元素,是1 printf("%d ",*(++p));//*(++p)是先自加再用,p指向第一个元素,自加1后就是指向第二个元素,是2 pr...

*(p+2)的值是4 验证代码如下: #include int main(){int a[5]={1,2,3,4,5},*p;p=a+1;printf("%d",*(p+2));return 0;}执行结果: 原理如下: a+1是数组a[1]的地址 p=a+1就是指向a[1]的地址 因此后面p+2,就是指向a[3]的地址 *(p+2)就是a[3]的值=4

输出1,6.因为本身数组名也是一种指针,其指针类型与数组类型相同。数组名指针指向的内容就是数组的第一个元素,也就是下标为0的元素。那么让一个指针等于数组名,其实就是让这个指针指向数组第一个元素也就是下标为0的元素。所以*p=a[0],*(p+3)=...

int a[5]={1,2,3}数组在内存中申请了五个连续的地址,假设是五个方框吧□□□□□,依次存放了1,2,3,0,0; *p=a;定义了一个指针,指向a数组的首地址,也就是第一个方框,p+1,就是指向第二个方框。*(p+1)就是取p+1个方框内的数据,据上面分析,我们...

*p++=1;p++;*p=2 1++=2 2*(*++p)=2*3=6

#include int main(){ int a[]={1,2,3,4,5}; int *p=a; printf("%d %d %d\n",*(p++),*p++,*++p); return 0;}printf("%d %d %d\n",*(p++),*p++,*++p); 在同一句中 对同个变量执行多次引用同时涉及自加的, 是未定义行为. 编译器自行决定结果. 所以...

这好解释啊,因为++是后++,要等到把(*--p)的值赋给y后(*--p)的值才会增1。所以结果是y=1,a[0]=2。你可以用下面的代码验证: int main(void){ int a[ ]={1,2,3,4},y,*p=&a[1]; y=(*--p)++; printf("%d %d\n",y,a[0]); return 0;}

如果指针变量p1和p2都指向同一数组中的元素,若执行p2-p1,结果是p2-p1的值(两个地址之差)除以数组元素的长度。5*4(int字节为4时)/4=5

网站首页 | 网站地图
All rights reserved Powered by www.mlfk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com