【发布时间】:2010-12-12 05:44:12
【问题描述】:
我有一个用于存储字符串的 char 指针。稍后在程序中使用它。
我已经这样声明和初始化了:
char * p = NULL;
我只是想知道这是否是一种好习惯。我正在使用 gcc 4.3.3。
【问题讨论】:
-
我猜,他是在问他是否应该将该“字符串”初始化为 NULL(或 0)、“”或根本不初始化它。
-
这里需要注意,NULL通常 0,但根据标准可能会有所不同:
The macro NULL, defined in any of <clocale>, <cstddef>, <cstdio>, <cstdlib>, <cstring>, <ctime>, or <cwchar>, is an implementation-defined C++ null pointer constant in this International Standard。我肯定会坚持使用 NULL,除了它比 0 更“面向类型”并且在源代码中更具描述性。 -
int 值0,当转换为指针类型时,总是产生一个空指针。从可移植性的角度来看,您所做的没有任何区别,NULL 是否只是 0 都没有关系。这仍然留下了“更具描述性”的论点,对此意见不一。反诉相当于 NULL 宏是一个稍微泄漏的抽象和误用时误导(
int i = NULL;) -
@RedGlyph:不同的语言;您引用的是 C++ 而不是 C。C 甚至没有
<clocale>等标头。 -
首选样式:在 C 中:char * c = NULL;在 C++ 中:char * c = 0;
标签: c pointers char-pointer