永发信息网

有错没有:*p++=*q++

答案:3  悬赏:20  手机版
解决时间 2021-04-05 16:24
在C中,p和q指针分别指向两个数组第一位。
这里的运算顺序是什么?是赋值后指针分别后移一位还是指针所指内容自增+1?
++在后面不是应该先赋值才移动?
最佳答案
这个试子是两边的指针各自移动一位,然后再赋值,算术运算符的优先级高于赋值运算符。
我上面的回答是错,应该是先赋值,然后再各自移动。
下面的代码可以验证:
#include "stdio.h"
main()
{
int a[5]={1,2,3,4,5};
int b[5]={5,4,3,2,1};
int *p,*q;
int i=0,j=0;
p=a;
q=b;
for(j=0;j<5;j++)
{
printf("%d\n",*q++);
}

for(i=0;i<5;i++)
{
*p++=*q++;
}
for(j=0;j<5;j++)
{
printf("%d\n",*p++);
}
}
全部回答
双目运算符“++”的运算级别是高于“*”的,所以先执行++。 那两楼都说的不够详细,还要看指针变量p和q的类型,比如说是int类型(占四个字节) 假设q存储的地址是100,那执行q++后所指向的地址就是104(并不是101,要注意这一点)(p++类似,不再说明) 再把104这个地址的值取出来,赋给改变后p所指向的地址的值,这就实现了更改值的操作。 再说明p++的地址==p原来指向的地址+类型所占字节数*1 如果是*p+n(n是整数)的意思是p原来指向地址+类型所占字节数*n所在地址存放的值
没错,相当于p,q分别指向下一位,并且把q指向的值赋值给p指向的值 char *mystrcpy(char *dst,char *src) { while ((*dst++=*src++)!='\0') return dst; } 简单的表达一下,就是字符复制 先是指针移动再*取值,再赋值 (++的运算优先级>*)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
洛阳有直达大连的火车吗?
缓存是什么意思,硬盘的转速和缓存容量是什么
2015年属猪人正月开业大吉我1971年生人农历6
请问,无理数是被发明的,还是被发现的
姓虞的祖先是?
How pleasant the picture is to !A. be look
只身造句
一台轰6轰炸机多少钱
为什么生的人在水中会一直下沉而死的人会漂浮
单选题在低等植物细胞内,出现在核附近并且与
我给朋友发了一条信息说有点想你了,被他老婆
单选题“通济渠,西通河洛、南达江淮,炀帝巡
如果说感情的基础是新鲜感,那一个人的新鲜感
华硕A455L开机后出现这个,重启也无法跳过,
竞争与合作的名言名句,有关合作的名人名言
推荐资讯
哪种鱼鱼头最好吃
thinkpad edge 545 4500元 正常么
关于牡丹蝴蝶的诗歌,给牡丹和蝴蝶(国画)取名
下列过程中,通过热传递改变物体内能的是A.相
刚做完人流帝王蟹可以吃吗
2013MAMA颁奖典礼
问:苹果微信更换相册封面选择从手机相册选择
醋酯纤维和锦纶哪个吸湿好
爸爸去哪儿,爸爸去哪儿第二季陆毅在新西兰戴
x1,x2,x3,…,x10的平均数是5,x11,x12,
如何评价塞拉sylar在Ti6 Dota2国际邀请赛上的
牧竹子国画的价值,牧竹子为何百度百科没有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?