初始化char指针

ant*_*009 14 c pointers char-pointer

我有一个char指针,用于存储字符串.它稍后在程序中使用.

我已经声明并初始化为:

char * p = NULL;
Run Code Online (Sandbox Code Playgroud)

我只是想知道这是不是很好的做法.我正在使用gcc 4.3.3.

f0b*_*b0s 14

是的,这是个好主意. Google Code Style建议:

  1. 即使您现在不需要它们,也要初始化所有变量.
  2. 通过初始化指针NULL,int"0和s float由0.0"秒-只是为了更好的可读性.

    int i = 0;
    double x = 0.0;
    char* c = NULL;
    
    Run Code Online (Sandbox Code Playgroud)

  • 第一部分 - "倾向于始终初始化" - 仅在C 99和C++中可接受,其中声明可以在代码中的任何位置进行.在经典的C89/90中,这是一个主要的反规则.不要把你的代码浪费在这样的废话上.第二部分 - "使用特定于类型的初始化器" - 在任何情况下都是反规则.它违反了良好编程的最重要规则之一:没有充分理由不引入任何冗余.浮点值可以通过"0"安全且成功地初始化(而不是"0.0"). (2认同)

pmg*_*pmg 5

不能将字符串存储在指针中。

您的定义mgt_dev_name很好,但是您需要将其指向有字符串空间的地方。要么malloc()使用该空格,要么使用先前定义的字符数组。

char *mgt_dev_name = NULL;
char data[4200];

/* ... */

mgt_dev_name = data; /* use array */

/* ... */

mgt_dev_name = malloc(4200);
if (mgt_dev_name != NULL) {
    /* use malloc'd space */
    free(mgt_dev_name);
} else {
    /* error: not enough memory */
}
Run Code Online (Sandbox Code Playgroud)