早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
怎么用赋值法?什么样的题可以用赋值法?需要什么条件? 2020-06-03 …
当给16位的unsignedshort对象赋值100000时,赋的值是什么?100000-6553 2020-07-11 …
11.定义一个十个元素的一维数组,将各元素的值都赋为下标的平方,并输出元素值。12.定义一个十个元 2020-07-22 …
下列关于赋值语句的说法错误的是()A.赋值语句的作用是先计算出赋值号右边的表达式的值B.赋值语句是 2020-07-24 …
下列关于赋值语句的说法错误的是()A.赋值语句的作用是先计算出赋值号右边表达式的值B.赋值语句是把左 2020-12-31 …
下列关于赋值语句的说法错误的是()A.赋值语句的作用是先计算出赋值号右边的表达式的值B.赋值语句是把 2020-12-31 …
在对应法则x赋值给y,y=x的绝对值+b,x属于R,y属于R中,若2赋值给5,则-2赋值给什么?空格 2020-12-31 …
设structstudent{intno;charname[12];floatscore[3];}s 2020-12-31 …
下列关于赋值语句的说法错误的是()A.赋值语句的作用是先计算出赋值号右边的表达式的值B.赋值语句是把 2020-12-31 …
C语言定义变量的同时赋予数值和先定义后赋值有什么区别应当说都是一样的 2020-12-31 …