main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12,}; int *p=a+5,*q=p; *q=*(p+5); q--;

printf ("%d%d尀n,*p,*q);}
2024-12-23 06:18:31
推荐回答(3个)
回答1:

int *p =a+5,/*数组名代表的是数组的首地址,
既将a向后移五个单位,变成了a[5],那么p指向的是[5]在内存中的地址*/
*q=p; // 因为前面是逗号,这里的q指向的就是a[5]在内存中的地址
*q=*(p+5); /* 将p指针向后移动五个单位.这样p指向的是a[10],a[10]的值赋值给p指向的内存地 址,也就是赋值给a[5],这个命令和a[5]=a[10];这个时候,数组的成员的值已经发 生 了变化,分别是a[]={1,2,3,4,5,11,7,8,9,10,11,12,};*/
q--; /* q由原来指向a[5].变成了指向a[4]

所以 *q==5;*p==11

回答2:

int *p=a+5;//p指向6
*q=p; //q指向6
*q=*(p+5);//改变q指向的地址里的值,从6变成了11
q--;//q指向5
所以*p值为11,而*q值为5 打印结果115

回答3:

115