我对C语言还很陌生,特别是对指针不熟悉。这里遇到的问题很简单:
#include <stdio.h>
char *p1 = "Hello";
char *p2;
p2 = "world"; // error: redefinition of 'p2' with a different type: 'int' vs 'char *'
int main()
{
char *p3 = "Hello";
char *p4;
p4 = "world"; // OK! p4 can re-point to somewhere
return 0;
}
我声明了一个全局指针
p2
,但是我试图将一个字符串 "hello"
赋值给它。但是 QT 提示一个错误:重新定义了 'p2',类型不同:'int' vs 'char *'。
它说
p2
是一个 int
?但我明明把它声明为一个 char *
;然而,作为一个局部指针,
p4
可以实现同样的功能!在 main
函数中一切正常。发生了什么?我很困惑!
p2
可以随心所欲地玩耍了。 :) - Chris Liu