这三者是否相同:
char* p= NULL;
char* q = "";
char r[] = {'\0'};
我怀疑第一个与其他人不同,但我并不完全确定。
答案 0 :(得分:5)
我正在回答C ++,即使OP 也将问题标记为C.这是两种不同的语言。将它们混为一谈并不是一个好主意。
此声明:
char* q = "";
在C ++ 03中使用了不推荐的转换,在C ++ 11中变为无效。我们现在在C ++ 14。
这两个声明:
char* p= NULL;
char r[] = {'\0'};
根本不同。第一个声明指针并将其设置为null。第二个声明一个项目的数组,该项目设置为null。
关于
“这三个是等价的
答案是否定的,完全没有:一个是无效的,一个是声明一个指针,一个是声明一个数组。
答案 1 :(得分:2)
char* p = NULL;
这会将指针 p
分配给NULL,这意味着p
不会指向任何有效的内存地址。
char* q = "";
char r[] = {'\0'};
这些都创建空字符串,基本相同。 q
指向有效的内存地址,与前一个示例中的p
不同。 r
是一个空字符串数组。
答案 2 :(得分:1)
char* p= NULL; // initializes the character pointer to NULL
char* q = ""; // character pointer points to a valid string with null content
char r[] = {'\0'}; // character array having null content