C++ 无法使用 'char' 类型的右值初始化 'char *' 类型的变量
C++ cannot initialize a variable of type 'char *' with an rvalue of type 'char'
char *p = 's';
报错
cannot initialize a variable of type 'char *
' with an rvalue of type 'char
'
谁能给我解释一下?非常感谢。
因为's'
确实是char
类型。您需要以下其中一项:
char p = 's';
const char *p = "s";
如果您真的只想操纵单个字符,请使用第一个。
如果您想要 C 风格的字符串,请使用第二个。
p
是一个指针,类型为 char*
。 's'
是 char
类型的字符文字。您不能从字符初始化指针。
也许您希望 p
是单个字符:
char p = 's';
或者您可能希望它指向包含字符 's'
:
的字符串
char const *p = "s"; // Must be const, since string literals are constant
感谢你的编译器。这可能在 DOS 中起作用并导致你非常头疼。
你知道指针是内存地址吗?这是问题的一部分。 's' 可以在许多 C and/or C++ 编译器中转换为数字。查看一个 ASCII table
char *p = 's';可以从字面上设置它 p 内存地址 0x73,或者 OS 声明内存地址为 0x73 的任何内容。编译器将 "You can't do that!"
在某些形式的 DOS 和正确的 C 编译器(没有 OS 保护)中,您实际上可以这样做并查看 into/change 存储在内存地址 0x73 的任何内容。请参阅 http://webspace.webring.com/people/su/um_11214/vga.html 了解原因。
您实际上可以直接使用指针在 DOS 中乱用您的视频卡的 RAM。这也是为什么在Windows的早期,很多游戏还是为了DOS出来的一个很大的原因。这是一个强大的技术
你弄错了。您应该使用双引号 ("
) 而不是单引号 ('
)。
通常,'s'
表示字符文字,它被计算为类型 char
.
而你的 p
是一个 char
类型的指针(char*
)初始化不起作用。
使用"s"
获取字符指针。不是那个给你一个 const char *
你可以输入大小写到 char*
.
enter code here
char* p = (char*)"s";
或
const char* p = "s"
char *p = 's';
报错
cannot initialize a variable of type '
char *
' with an rvalue of type 'char
'
谁能给我解释一下?非常感谢。
因为's'
确实是char
类型。您需要以下其中一项:
char p = 's';
const char *p = "s";
如果您真的只想操纵单个字符,请使用第一个。
如果您想要 C 风格的字符串,请使用第二个。
p
是一个指针,类型为 char*
。 's'
是 char
类型的字符文字。您不能从字符初始化指针。
也许您希望 p
是单个字符:
char p = 's';
或者您可能希望它指向包含字符 's'
:
char const *p = "s"; // Must be const, since string literals are constant
感谢你的编译器。这可能在 DOS 中起作用并导致你非常头疼。
你知道指针是内存地址吗?这是问题的一部分。 's' 可以在许多 C and/or C++ 编译器中转换为数字。查看一个 ASCII table
char *p = 's';可以从字面上设置它 p 内存地址 0x73,或者 OS 声明内存地址为 0x73 的任何内容。编译器将 "You can't do that!"
在某些形式的 DOS 和正确的 C 编译器(没有 OS 保护)中,您实际上可以这样做并查看 into/change 存储在内存地址 0x73 的任何内容。请参阅 http://webspace.webring.com/people/su/um_11214/vga.html 了解原因。
您实际上可以直接使用指针在 DOS 中乱用您的视频卡的 RAM。这也是为什么在Windows的早期,很多游戏还是为了DOS出来的一个很大的原因。这是一个强大的技术
你弄错了。您应该使用双引号 ("
) 而不是单引号 ('
)。
通常,'s'
表示字符文字,它被计算为类型 char
.
而你的 p
是一个 char
类型的指针(char*
)初始化不起作用。
使用"s"
获取字符指针。不是那个给你一个 const char *
你可以输入大小写到 char*
.
enter code here
char* p = (char*)"s";
或
const char* p = "s"