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;
在你的脑海中画一条线穿过星号。 左边是指向的,右边是什么类型的指针
例如
-
const char * const p
– 指针p
是常量,p
指向的字符也是如此 – 即不能将指针和内容都改为p
指向的内容 -
const char * p
–p
指向常量字符。 您可以更改p
的值并使其指向不同的常量字符。 但无论p
指向什么,你都无法改变内容。 -
char * const p
– 您无法更改指针但可以更改内容
最后
-
char * p
– 一切都准备好了
希望有所帮助。
所有都是有效的语句,因为你没有取消引用它们,因为所有的指针都没有被初始化或者没有指向任何有效的内存位置。
它们是有效的,因为指针不是常量,但指针指向的值是常量。 所以,这里的指针可以重新分配到指向不同的位置。
这些作业完全有效,因为我和其他人在你最近的几乎相同的问题中解释过。
const char*
是指向无法使用该指针修改的内存的指针。 这里没有什么可以绕过这一点。 如果你从那时起分配了c4 = c1
,那么编译器会反对它绕过const。
所有这些都是有效的,唯一有问题的行是char * c6 = "abc";
:这里“abc”是一个const文字,所以将它分配给非const指针是不安全的,如果不是编译错误,我至少应该生成一个警告(我没有尝试编译它)。