【发布时间】:2014-03-19 18:28:18
【问题描述】:
这听起来可能太疯狂了,但我只是有一个想法。为什么在 C 中
char *pc = 'H'; // single character
char *ps = "hello"; // a string
两者都有效?我的意思是为什么 char* 可以保存/引用一个字符以及一个以空字符结尾的字符串?
为什么没有为*pc 生成保护子句或编译器错误,因为char* 不包含以空值结尾的字符串?
我在Ideone 中检查过,没有收到任何警告。
【问题讨论】:
-
我认为
char *pc = 'H'不会像你想的那样。 -
如果您尝试
printf("%s", pc);,可能会发生非常有趣的事情。可能是垃圾输出或崩溃。 -
听取您的警告或提高您的警告级别。
-
始终使用:
g++ -Wall。它将帮助您发现运行时错误,例如您的代码可能导致的错误...