C语言 main() {int a[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=b}
main(){inta[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=bp+=2;q+=3;*p=*(q)+3;q--;*(q-1)=*(p...
main()
{int a[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=b
p+=2;q+=3;
*p=*(q)+3;
q--;
*(q-1)=*(p+1)-5;
printf("%d\n",*p);
printf("%d|n",*q);
}
求具体推导过程 谢谢 展开
{int a[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=b
p+=2;q+=3;
*p=*(q)+3;
q--;
*(q-1)=*(p+1)-5;
printf("%d\n",*p);
printf("%d|n",*q);
}
求具体推导过程 谢谢 展开
6个回答
展开全部
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数组首地址。
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=*(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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询