早教吧作业答案频道 -->其他-->
while(*p2++=*p1++);为什么赋不了值main(){char*p1=“name”;char*p2;p2=(char*)malloc(20);memset(p2,0,20);while(*p2++=*p1++);printf(“%sn”,p2);}这段程序为什么改变不了p2所指向的值,清高手解答
题目详情
while(*p2++=*p1++);为什么赋不了值main() { char*p1=“name”; char*p2; p2=(char*)malloc(20); memset(p2,0,20); while(*p2++=*p1++); printf(“%sn”,p2); } 这段程序为什么改变不了p2所指向的值,清高手解答
▼优质解答
答案和解析
我又被猛住了,丢脸阿…… 一瞬间看上去好像是没错,但是实际上有个非常严重的问题,就是p2指向的是复制到的字符串尾部!自然不会有数据输出了,并不是没复制过去,而是复制过去之后p2从指向缓冲区头变成了指向缓冲区尾部……比如把程序改成这样 intmain() { char*p1="name"; char*p2,*p3; p3=p2=(char*)malloc(20); memset(p2,0,20); while(*p2++=*p1++); printf("%s",p3); free(p3); return0; }
看了 while(*p2++=*p...的网友还看了以下:
c++newcmalloc区别!!!5、下列关于new和malloc的说法正确的是A、malloc 2020-04-06 …
一段c++看的有点晕if((fds=(dhtfds*)malloc(mem))==NULL)got 2020-05-17 …
15.若内存变量名与当前打开的表中的一个字段名均为NAME,则执行NAME命令后显示的是()A.内 2020-06-09 …
mysql问题,一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a 2020-06-14 …
while(*p2++=*p1++);为什么赋不了值main(){char*p1=“name”;c 2020-07-21 …
关于当前sql语句描述正确的是?createtableuser(idvarchar(32),nam 2020-07-26 …
innosetup5[Tasks]Flags有哪些值[Tasks]Name:"desktopico 2020-07-27 …
初学SQL知识一道很简单的题SQL中修改数据表中的数据(10分)提示:数据表AT字段Name员工姓名 2020-11-15 …
一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应 2020-12-22 …
判断正误:假设已有定义和语句“int*p,a;p=&a;p=malloc(int);”,则执行“*p 2020-12-31 …