Я использую свой код в SUSE Linux. У меня есть указатель, который я делаю = NULL в функции. Но проблема возникает, когда я пытаюсь сравнить тот же указатель с NULL в цикле while. Это приводит к сбою программы. Я воспроизвел мою проблему в примере кода ниже. Может кто-нибудь сказать, пожалуйста, что здесь происходит?
Мой код, как показано ниже:
#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);
}
Проблема в том, что сравнение buffer != NULL
не выполняется, и управление переходит в цикл, что не должно происходить в идеале. Я решил это, сделав это:
ad[0] = NULL
, и сравнение изменилось на buffer[0] != NULL
.
Поскольку NULL используется только в контексте указателя, это плохой код. Я мог бы использовать \ 0 вместо NULL в моем обходном пути и избежать написания «плохого кода», но я действительно хочу знать, что здесь происходит. Может кто-нибудь уточнить, пожалуйста?
Спасибо за тонну,
Адитья