![](/img/trans.png)
[英]how to test if a variable is valid or whether it is initialized or not in C?
[英]How to test is a string is initialized in c?
快速简单的C问题: char* foo
如何测试foo
是否仍未分配值?
谢谢。
你不能。
相反,使用NULL
初始化它并检查它是否为NULL
:
char *foo = NULL;
...
if(!foo) { /* shorter way of saying if(foo == NULL) */
您无法在运行时以独立于平台的方式进行测试。 除了分配给它之外,使用未初始化的值执行任何操作都是未定义的行为。 查看源代码并分析代码流。
可能是您的编译器使用特定值初始化堆栈内存,您可以测试此值。 它甚至不能移植到具有不同标志的相同编译器(因为标准不需要它,并且它可能仅在调试模式下发生),并且它不可靠,因为您可能已经分配了“魔术”值。
在这种情况下,您通常要做的是将指针初始化为NULL
(等效地为0),然后再测试它是否为NULL
。 这不会告诉您是否在中间时间内为其指定了NULL,但它会告诉您是否已指定“有用”值。
您的变量定义/声明只是未初始化。 您可以通过在声明变量时首先初始化变量来检查变量是否具有值。 然后您可以检查它是否具有该初始值。
char *foo = NULL;
//...
if(foo)
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.