繁体   English   中英

如何测试是在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM