main()
{int a[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=b//p指向a的首地址,即1,q指向b,即6
p+=2;q+=3;//p地址后枯枣移2位,指向3,q同理指向9
*p=*(q)+3;//赋值语句,将q指向的内容加3赋给p,则p指向的值3变成12,q依旧为9
q--;//q地址前移1位,即历缺8
*(q-1)=*(p+1)-5;//将p指向位置的下一位的内容即4减去5得-1,赋给q的前一位,则q的肢败辩前一位变成-1,但q的指向位置没有改变
printf("%d\n",*p);//输出p的内容,即为12
printf("%d|n",*q);//输出q的内容,即为8
}
这里涉及到很多小知识点,如果不理解,欢迎追问,若满意,请采纳,谢谢
int
a[
]={0,1,2,3,4,5,6,7,8,9}:意思搭拿猛是a数组为包含{0,1,2,3,4,5,6,7,8,9}的整数数组,
int
a[
]={0,1,2,3,4,5,6,7,8,9},*p=a:p是等效于a的敏局整数指针,你应该这样读int
*p
=a;(*号跟着变量走)定义了一个指针等于a数组首地知桥址。
你应该自己推导,哪里挡住了你的思路,再提问,这样对你理解知识有帮助!
p+=2;q+=3;悄巧p指针指向a[2],q指针指向b[3]
*p=*(q)+3;把启液键a[2]换成12
q--;q指针指向b[2]
*(q-1)=*(p+1)-5;b[1]换成-1
printf("%d\n",*p);输出12
printf("埋和%d|n",*q);8
*p=a 表示指针p指向数组a的首地址即第一个元素;*q=b指针q指向数组b的首地址即第一个元素;
p+=2表示数组a的拆凯唯第三个元素,q+=3表示b数组的第四个元素。因此*p=3,*q=9;
*p=*(q)+3;这一句是把数组的第三个元素修改为7;此时a={1,2,12,4,5}
q--;此时q应指向数组b的第三个元素
*(q-1)=*(p+1)-5;这一句是修改孙蠢b中第二个元素旅培为a中第四个元素的值减去5因此b={6,-1,8,9}
一次输出的结果应为12,8;