请问下if(p)甚么意思啊。。。?热点资讯

/ / 2015-10-25
看你的代码,猜想fun函数的前去值的类型是:char * char *p ;表现定义了一个char型指针变量 ,它指向一个地址,一个中央,在这里存储了一个或许着一串char型数据。固然,我们也可让p指...

  看你的代码,猜想fun函数的前去值的类型是:char *

  char *p ;表现定义了一个char型指针变量 ,它指向一个地址,一个中央,在这里存储了一个或许着一串char型数据。固然,我们也可让p指向一个空地址NULL,表现这里没有存储任何器械,依次不能从这里掉掉落任何有效的数据。

  在 p=fun(s,t)后,为甚么要有一个辨别if(p)呢。因为是fun前去的,而fun很有能够前去NULL,所以要参与辨别。如许的例子很多 比如应用malloc停止内存分派的时分,也要辨别前去值得。因为malloc有能够会掉败,而掉败就前去NULL。

  printf("\nthe result is:%s\n", p); (还有这里p不是地址么?能用吗?)

  p是个地址,这个地址表现了p指向的字符串的末尾位置。而printf函数会把p的字符串全部打印出来。

  你可以做个试验,看看结果

  printf("\nthe result is:%s\n", *p);

  能够你会了解的更深入些。

  欲望对你有所协助

  平日p=fun(s, t)后,假设胜利p将有效,不是空,否则p将为空指针。在C言语里,空,也就是null,对立数值是0的指针,#define null (void*)0。因此你按if(p!=0)了解也算对,更好的了解是if(p !=null)。 p=null和*p=0是分歧的概念,p=null表现p是空指针,而*p=0表现p指针指向的数据是0(p不为null)。

  printf("\nthe result is:%s\n", p); %s含义是打印p指向的字符串,而我们知道,字符串在C外面的表达方法就是指向字符的指针char*,而p就是如许的类型。

  fun不贴出来不可啊。。。if()条件辨别,外面参数只要两种状况,true or false,假设fun()的前去值是一个bool型,那么只需前去值为true就履行,还有一种,就是前去值不是bool型,非0即为真

  假设p的值为0,就不履行语句,音讯来自华夏同盟

  起主要知道系统外部定义:

  #define NULL 0

  if(p) 等价于if(p!=NULL)

1