我在SUSE Linux上运行我的代码.我有一个指针,我在一个函数中使= NULL.但是当我尝试在while循环中将同一指针与NULL进行比较时,问题就出现了.这导致程序崩溃.我在下面的示例代码中重现了我的问题.有人可以告诉我这里发生了什么吗?
我的代码如下:
#include <stdio.h>
int func(char *,int);
int main()
{
char buffer[20];
int i =20;
int temp = func(buffer,i);
if ( (temp == 0) && (buffer != NULL) )
{
printf("inside loop \n");
}
}
int func(char *ad,int a)
{
ad = NULL;
printf("Integer is %d \n", a);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
问题是比较buffer != NULL失败并且控制进入循环内部,这不应该理想地发生.我通过这样做解决了这个问题:
ad[0] = NULL并且比较改为buffer[0] != NULL.
由于NULL仅在指针上下文中使用,因此这是错误的代码.我可以在我的解决方法中使用'\ 0而不是NULL,并且不会写'坏代码',但我真的想知道这里发生了什么.有人可以澄清一下吗?
非常感谢,Aditya