怎么解释下列指针和数组的区别

愤怒对抗喳喳 2002-09-28 05:29:01
char a[] = “hello”;
a[0] = ‘X’;
cout << a << endl;
char *p = “world”; // 注意p 指向常量字符串
p[0] = ‘X’; // 编译器不能发现该错误
cout << p << endl;

怎么才能修改p的指向内容呢
...全文
44 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
愤怒对抗喳喳 2002-09-28
  • 打赏
  • 举报
回复
to mattrew(为西)
有问题??
tomatopj 2002-09-28
  • 打赏
  • 举报
回复
to 渣渣:
应该是
p = new char[6];
别忘了'\0'
xqxxl 2002-09-28
  • 打赏
  • 举报
回复
指针和数组是语言中很重要的部分,学好指针会让你编程容易,
灵活,但它也是最危险的,这一部分要好好学学。这里三言两语是讲不清楚的
mattrew 2002-09-28
  • 打赏
  • 举报
回复
在C语言里char* p="hello world";和
char* p;
p="hello world";有区别吗
应该没有把
...........
当然有区别了 上面是定义字符串
下面的编译有问题!
愤怒对抗喳喳 2002-09-28
  • 打赏
  • 举报
回复

那么
char *a = "hello";
char *p;
p = new char[5];
strcpy(p,a)
p[0] = "X";
应该可以了把
differ1 2002-09-28
  • 打赏
  • 举报
回复
to fxm2002(大家好) :我不同意你的观点!!!

同意 dai_zz(渣渣) ,如果char *p="hello";那么p指向的是字符串常量,字符串常量分配的是静态存储区,是不可以被修改的。

楼主的疑问在于char *p="hello"; 与 const char *p="hello" ;有什么区别,其实如果你要赋常量字符串的话就没有区别,但是在下面的情况下就有了:

1)
char a='h';
char *p=&a;
*p='x';//ok


2)
char a='h';
const char *p=&a;
*p='x';// not permitted,wrong!


但这两中情况下,你都可以改变指针的指向。









愤怒对抗喳喳 2002-09-28
  • 打赏
  • 举报
回复
不知道楼上的看过高质量C++/C 编程指南没有示
书上对于这段代码是这么写的:
字符数组a 的容量是6 个字符,其内容为hello\0。a 的内容可以改变,
如a[0]= ‘X’。指针p 指向常量字符串“world”(位于静态存储区,内容为world\0),常
量字符串的内容是不可以被修改的。从语法上看,编译器并不觉得语句p[0]= ‘X’有什么
不妥,但是该语句企图修改常量字符串的内容而导致运行错误。

fxm2002 2002-09-28
  • 打赏
  • 举报
回复
)语句 const char* p 使p指向的内容不能通过指针p修改,

如:
const char *p = “world”;
p[0] = ‘X’; //error!

)语句 char *p 使p指向的内容能够通过指针p修改!

如:
char *p = “world”;
p[0] = ‘X’; //ok!

)char* p="hello world";和
char* p;
p="hello world";没区别.
愤怒对抗喳喳 2002-09-28
  • 打赏
  • 举报
回复
在C语言里char* p="hello world";和
char* p;
p="hello world";有区别吗
应该没有把
ToUpdate 2002-09-28
  • 打赏
  • 举报
回复
可以修改吧?!
愤怒对抗喳喳 2002-09-28
  • 打赏
  • 举报
回复
可我的指针p不是const chat* p这样分配的啊
那么const char* p和char *p不是没区别了吗
xiaott 2002-09-28
  • 打赏
  • 举报
回复
不能修改P指向的内容,但可以修改P的指向!
blue_coco 2002-09-28
  • 打赏
  • 举报
回复
不可以。

69,382

社区成员

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

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