const char指针赋值

以下作业是否有效? 或者这些都会产生问题。 请建议。

const char * c1; const char * c2; const char * c3; char * c4; c2 = c1; c2 = c3; c2 = c4; 

如果我执行以下操作该怎么办?

 const char * c5 = "xyz"; char * c6 = "abc"; c2 = c5; c2 = c6; 

在你的脑海中画一条线穿过星号。 左边是指向的,右边是什么类型的指针

例如

  1. const char * const p – 指针p是常量, p指向的字符也是如此 – 即不能将指针和内容都改为p指向的内容
  2. const char * pp指向常量字符。 您可以更改p的值并使其指向不同的常量字符。 但无论p指向什么,你都无法改变内容。
  3. char * const p – 您无法更改指针但可以更改内容

最后

  1. char * p – 一切都准备好了

希望有所帮助。

所有都是有效的语句,因为你没有取消引用它们,因为所有的指针都没有被初始化或者没有指向任何有效的内存位置。

它们是有效的,因为指针不是常量,但指针指向的值是常量。 所以,这里的指针可以重新分配到指向不同的位置。

这些作业完全有效,因为我和其他人在你最近的几乎相同的问题中解释过。

const char*是指向无法使用该指针修改的内存的指针。 这里没有什么可以绕过这一点。 如果你从那时起分配了c4 = c1 ,那么编译器会反对它绕过const。

所有这些都是有效的,唯一有问题的行是char * c6 = "abc"; :这里“abc”是一个const文字,所以将它分配给非const指针是不安全的,如果不是编译错误,我至少应该生成一个警告(我没有尝试编译它)。