社区
C语言
帖子详情
关于 while(*p2++ = *p1++)
cwbcwb505
2010-11-09 09:59:12
Main()
{
char *p1=“name”;
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(“%sn”,p2);
}
请问上面代码会输出什么?为什么?
...全文
323
8
打赏
收藏
关于 while(*p2++ = *p1++)
Main() { char *p1=“name”; char *p2; p2=(char*)malloc(20); memset (p2, 0, 20); while(*p2++ = *p1++); printf(“%sn”,p2); } 请问上面代码会输出什么?为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
永远的霸者
2010-11-09
打赏
举报
回复
此时指针p2指向string"name" 后面的“\0” 输出的是“\0”。
awsqsh
2010-11-09
打赏
举报
回复
每天一顶。。。建议重写代码,,感觉好乱
無_1024
2010-11-09
打赏
举报
回复
当p2为'\n'时终止
hjs1122
2010-11-09
打赏
举报
回复
while(*p2++ = *p1++);
printf(“%s\n”,p2);
你是想完成:将p1指向的内存复制给p2指向的内存
但是你的p2指针已经改变了,输出它你又有什么意思啦!
可以这么改:
char *p3 = p2;
while(*p3++ = *p1++);
printf("%s\n", p2);
luciferisnotsatan
2010-11-09
打赏
举报
回复
[Quote=引用 2 楼 lthyxy 的回复:]
printf(“%sn”,p2); 遇‘\0’就停止输出。
[/Quote]
+1
太乙
2010-11-09
打赏
举报
回复
while(*p2++ = *p1++); 将p1指向的内存复制给p2指向的内存。。。
相当于:
do
{
*p2 = *p1;
p1++;
p2++;
}while (*p2 != '\0')
liutengfeigo
2010-11-09
打赏
举报
回复
printf(“%sn”,p2); 遇‘\0’就停止输出。
hhh_hao
2010-11-09
打赏
举报
回复
哪有人会写这样的代码
字符指针的使用
所以while(*
p2
++
= *
p1
++
)是先进行了*
p2
= *
p1
运算,然后又进行了
p2
++
和
p1
++
运算。所以*
p2
++
就可以拆分成*
p2
和
p2
++
,
p2
++
有相当于
p2
=
p2
+1因此会导致指针
p2
发生改变,今天分享一个字符指针运算实例,希望大家能对字符指针有进一步的了解。主要分析while(*
p2
++
= *
p1
++
)这一句。*和自加运算符
++
优先级相同,所以按照从右到左进行运算。所以打印的值为字符串停止符‘0’
C
++
while(*p)与while(p)的区别
测试用的是2019.02Clion编辑器 简要回答 while(*p)指的是当p指向的数值不为0,或者不为’\0’时执行操作。相当于while(*p!=0||*p!=’\0’) while( p)指的是当p存在指向时执行操作。(这个是根据结果推测的结论,分析过程和测试代码如下,如有不对,还望指正!) 测试代码 #include <iostream> using namespace std; char a[6]="a\0p0l",*p; int main() { p=a; c
简单问题1——while(*
p2
++
=*
p1
++
);
原题: Main() { char *
p1
=“name”; char *
p2
;
p2
=(char*)malloc(20); memset (
p2
, 0, 20); while(*
p2
++
= *
p1
++
); printf(“%sn”,
p2
); }
while (*p) p
++
; while (*
++
p) ; while (*p
++
)三种循环比较
整理while (*p) p
++
;while (*
++
p) ;while (*p
++
) .
字符串拼接函数strcat的实现 while(*p
++
!='\0')跳出后,p究竟指向哪? C/C
++
求职面试必备考点(三)...
在研究strcat函数实现的时候,发现了while(*p
++
!=‘\0’)的大秘密,也让我发现了在上篇博客中我犯的一个错误。原以为跳出后,P指向'\0',而实际上并非如此!我按跳出后P指向'\0',结果怎么拼接都实现不了,NND。为了验证这个问题,我们先上个小程序吧: #include<stdio.h> void main() { char *p = "abcdefg"...
C语言
70,038
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章