【问题标题】:How to understand the meaning of char *fptr = NULL, *field;? [closed]如何理解 char *fptr = NULL, *field; 的含义? [关闭]
【发布时间】:2015-01-08 21:30:16
【问题描述】:

我想知道下面的表达是什么意思:

char *fptr = NULL, *field;

谢谢!

【问题讨论】:

  • 代码是在函数内部还是外部?区别很重要,因为如果它在内部,则 field 未初始化,并且只能在初始化之前安全地用作赋值的目标(或通过指针传递)。如果它在函数之外,则 field 被隐式初始化——同样为 null。
  • 相当于char *fptr = NULL; char *field;

标签: c pointers ansi-c


【解决方案1】:

声明一个char指针fptr并将其初始化为NULL并声明另一个char指针fieldNULL((void *)0) 只是一个无效的指针值,您可以使用它来验证指针是否有效。

NULL 分配给指针有助于避免取消对未初始化指针的引用,例如malloc 在失败时返回NULL

这样,如果您在调用 malloc 后检查您的指针是否与 NULL,您可以防止未定义的行为。

【讨论】:

  • 不要将NULL 视为地址,而应视为哨兵值。特别是因为它实际上可能不是地址0。
  • 哦,谢谢!我现在明白了,我一直在看它,并没有意识到这是两个声明。再次感谢!
  • @user145190 阅读 this 了解有关逗号运算符的更多信息。
猜你喜欢
  • 2011-09-23
  • 2015-12-25
  • 2013-07-05
  • 2013-04-21
  • 1970-01-01
  • 2013-04-01
  • 2013-05-10
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多