我们都知道流行的指针 NULL 赋值,例如:
int *p = NULL;
或
int *p = 0;
我们总是应该在取消引用指针之前检查指针值,以防止程序崩溃。
1.) 但是有没有更好的方法来使指针无效?
2.) 我知道下面的语句与使指针无效没有什么不同(但毫无意义),因为它只会向指针变量写入“0”,但有人告诉我使用它来获得更好的代码编译器兼容性。这是真的吗?我觉得这没有任何意义?
memset(&p, 0, size(p));
最佳答案
Best ways to make a pointer point to nothing
int *p = NULL;
<小时/>
NULL
定义于 <stddef.h>
作为实现定义的空指针常量。给定的实现可能有多个空指针常量
所有空指针常量都将与0
进行比较和彼此。 *p = 0;
还将设置p
到空指针常量,通常与 *p = NULL;
相同
But are there any better way to nullify your pointers?
还有其他方法,但不是更好。
一些风格指南提倡*p = 0;
。最重要的是传达代码的清晰度。使用您所在团队的编码标准的风格。最好保持团队风格的统一。
memset(p, 0, size(p));
是错的。应该是memset(&p, 0, size(p));
零填充p
。 @rodrigo
关于c - 使指针指向任何内容的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874836/