以下是引用lz1091914999在2011-1-31 16:06:43的发言:
是啊,用'\0'赋值给char * 编译和运行都可以,但用'a'或'\n'赋值给char * 编译就报错,我用的编译器是VS2010,跟C++标准不是蛮接近的吗?
其实也可以解释这种现像。
因为标准规定,字符常量语义上应该被认定为整形常量。所以
char *p = 'a';
和
char *p = 97;
在语义上是等价的。(但在语义分析之前的词法分析应该会给出变量类型不匹配的错误。)
这种赋值,逻辑虽然说得通。但是编译器肯定要警告。
不过 '\0' 就是常数 0,这个地址有特殊含义。是可以给任何指针变量赋值的。