这三个是等价的:
char* p= NULL;
char* q = "";
char r[] = {'\0'};
Run Code Online (Sandbox Code Playgroud)
我怀疑第一个与其他人不同,但我不完全确定.
即使OP 也将问题标记为C,我也在回答C++ .这是两种不同的语言.混淆它们并不是一个好主意.
本声明:
char* q = "";
Run Code Online (Sandbox Code Playgroud)
在C++ 03中使用了一个不推荐的转换,在C++ 11中变得无效.我们现在在C++ 14.
这两个声明:
char* p= NULL;
char r[] = {'\0'};
Run Code Online (Sandbox Code Playgroud)
根本不同.第一个声明一个指针并将其设置为null.第二个声明一个项目的数组,该项目设置为null.
关于
"这三个是等同的吗?
答案是否定的,根本不是:一个是无效的,一个是声明指针,一个是声明一个数组.
char* p = NULL;
Run Code Online (Sandbox Code Playgroud)
这会将 NULL 分配给指针 p,这意味着它p不指向任何有效的内存地址。
char* q = "";
char r[] = {'\0'};
Run Code Online (Sandbox Code Playgroud)
它们都会创建空字符串并且基本上是等效的。与前面的示例q不同,它指向有效的内存地址。是一个带有空字符串的数组。pr
| 归档时间: |
|
| 查看次数: |
3011 次 |
| 最近记录: |