*p ++ 与 (*p) ++ 有什么不同呢?

qiwei 2002-03-13 04:16:23
在我的程序中:
char *p1 = "abcd";
char *p2 = p1;
char *p3 = p1;

*p2 ++; // 正确
(*p3) ++; // 出错

程序在编译时没有错,但运行时(*p3) ++则会出错。
...全文
54 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cstpjl 2002-03-13
  • 打赏
  • 举报
回复
P3指的是个常量
ywls 2002-03-13
  • 打赏
  • 举报
回复
p3指的是一个常量,如果将第3行char *p1="abcd"; 改为char p1[]="abcd";
数组变量则不会出错。
qiwei 2002-03-13
  • 打赏
  • 举报
回复
哦,我明白了,谢谢 fangrk(天使也一样,也一样会受伤) 。

*p2 ++ : 增加的是地址
(*p3) ++ : 增加的是内容。
出错的原因是因为 p3指向一个字符串常量,而常量则不允许修改。
fangrk 2002-03-13
  • 打赏
  • 举报
回复
char *p;
*p++:增加的是地址
(*p)++:增加的是内容,char
fangrk 2002-03-13
  • 打赏
  • 举报
回复
#include <iostream.h>
void main()
{ char *p1="abcd";
char *p2=p1;
char *p3=p1;
*p2++;
cout<<p2;
(*p3)++;
cout<<p3;
}
没有出错,可以运行。bc++3.1
qiwei 2002-03-13
  • 打赏
  • 举报
回复
但为什么会出错呢?
huanshilang 2002-03-13
  • 打赏
  • 举报
回复
(*p3) ++;
里面的 () 是不是没有必要啊!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧