如何测试是在c中初始化字符串?

nun*_*nos 2 c string initialization

快速简单的C问题: char* foo

如何测试是否foo仍未分配值?

谢谢.

pto*_*ato 26

你不能.

而是初始化它NULL并检查它是否NULL:

char *foo = NULL;
...
if(!foo) { /* shorter way of saying if(foo == NULL) */
Run Code Online (Sandbox Code Playgroud)


Ste*_*sop 7

您无法在运行时以独立于平台的方式进行测试.除了分配给它之外,使用未初始化的值执行任何操作都是未定义的行为.查看源代码并分析代码流.

可能是您的编译器使用特定值初始化堆栈内存,您可以测试此值.它甚至不能移植到具有不同标志的相同编译器(因为标准不需要它,并且它可能仅在调试模式下发生),并且它不可靠,因为您可能已经分配了"魔术"值.

在这种情况下,您通常要做的是将指针初始化为NULL(等效地为0),然后再测试它是否为NULL.这不会告诉您是否在中间时间内为其指定了NULL,但它会告诉您是否已指定"有用"值.