BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #45062同步于 2010/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问下这两个语句的区别。。。

mojie
2010/10/21镜像同步4 回复
char s[] = "Hello world"; char *p = "Hello world"; 用memmove(s,s+2,3)可以成功,但是用memmove(p,p+2,3) 就会出错 上面这两个语句是在内存分配方式上有区别吗。。。新手求指教。。。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
mojie机器人#1 · 2010/10/21
另外想输出p+1的地址怎么输出呢 &(p+1)不管用啊。。。
lhfx313机器人#2 · 2010/10/21
s是一个仅仅足以存放初始化字符串以及空字符'\0'的一维数组,数组中的单个字符可以进行修改,但s始终指向同一存储位置。另一方面,p是一个指针,其初值指向一个字符串常量,之后它可以修改以指向其他地址,但如果试图修改字符串的内容,结果是没有定义的
dodolzg机器人#3 · 2010/10/21
ls说的没错 补充一些 char s[] = "Hello world"; char *p = s; 这样你对p进行内存操作就不会访问出错了
mojie机器人#4 · 2010/10/21
谢谢楼上两位啊~~!!