【下载】GTK学习笔记

大家好,小弟刚学习Linux C,现在遇到了一点小问题
C代码:
if (a[0]==NULL)

我的意思是判断数组a中第一个变量是否为空,可是在编译时,GCC关于这一行的错误提示如下:
warning: comparison between pointer and integer

哪位大仙知道是怎么回事吗?小弟先说声谢谢啦!

作者: yukun7402   发布时间: 2011-01-29

我先声明我不是大仙……

开完数组之后的第一件事情是初始化数组,切记!
int a[5];
int i;

for (i = 0; i < 5; i++)
a[i] = 0;


然后你再判断的时候就可以用:
if (a[0] == 0)


不初始化数组是一件很危险的事情~~

另外我不知道你开的数组是什么类型的,我暂且理解为int型的,那么a[0]肯定指的是存储空间里面的int型变量,而NULL返回的却是一个地址值。你把一个int型和一个地址值进行比较,编译器当然要报错了~~

作者: racnil   发布时间: 2011-01-29

嗯,这样是个解决办法

作者: yukun7402   发布时间: 2011-01-29

谢谢啦

作者: yukun7402   发布时间: 2011-01-29

C语言是一个静态的语言,除非你定义了一个空指针,不然基本上不会出现变量为空的情况的。C的编译器会自动给你没有赋初始值的变量附上一个初始值,如果这个错误没有被发现的话往往会造成非常难以排除的错误。所以刚刚学习C语言的话尽量把好习惯养成……

作者: racnil   发布时间: 2011-01-29