C 如何检查变量是否有赋值
这是我的代码片段C 如何检查变量是否有赋值,c,C,这是我的代码片段 main() { char *filename; if(1 > 2) { filename = "file.txt" } if(filename != NULL (also tried 0) { do something } return 0; } 我的问题是如何检查filename var是否有赋值。我可以使用strcmp,但右值可以不同于“file.txt”更改: cha
main() {
char *filename;
if(1 > 2) {
filename = "file.txt"
}
if(filename != NULL (also tried 0) {
do something
}
return 0;
}
我的问题是如何检查filename var是否有赋值。我可以使用strcmp,但右值可以不同于“file.txt”更改:
char *filename;
致:
然后您的NULL
测试将正常工作
不初始化此指针时,其值为未定义。这就是你的测试失败的原因。编译器假定您不关心它有什么值。您必须自己初始化指针,否则它没有保证的起始值
char *filename = NULL;
无论何时声明(或定义)变量,都要将它们初始化为0
或NULL
(如果是指针),然后对照它们进行检查
比如说,
int i = 0;
..
if (!i) {
}
对于指针
int *p = NULL;
..
if (!p) {
}
始终初始化变量!(我读过代码,> No.<代码>),我读到一些地方,外部变量自动初始化为0。@ USE1074077:不是C或C++,而是java和许多其他语言。@ USE1074077:在<代码> C >代码中,静态变量是,我相信,但是始终这样做是好的实践。那么你就不必怀疑一个变量有什么值了。我们不能肯定地依赖“变量将自动分配给某某”,值得注意的是,这个分配之所以必要,是因为C在分配变量时不会在内存中存储任何值,除非你提供一个值。@maerics:我也这么想事情编辑。如果您使用的是GCC,启用
-Wuninitialized
选项进行编译将有助于发现这些问题。查阅
int *p = NULL;
..
if (!p) {
}