C语言中while(p)和while(*p)有何区别?

P.S 这道题为什么用while(*p)会编译出错?

while(p) 等价于while(p!=NULL) 检查的是p值是不是NULL
而while(*p) 相当于while( *p != 0) 检查的是p所指向的地址中的数据是否为0,但前提是p不能为NULL,所以,你的程序在使用while(*p)时,会出错!

在你这个代码中,会体现为编译出错!追问

while(*p)的前提是不能为NULL,程序中有体现吗

追答

while(*p)这种写法一定不会出现在链表的访问上!这种写法一般用在字符串的遍历上!

温馨提示:内容为网友见解,仅供参考
无其他回答

p是一个字符串指针。 while(*p)和while(*p!=0)一样么?
不一样 while(*p)代表*p有数值在p里面,既只要*p不为空时,循环有效 while(*p!=0)代表*p存的数据不能为0时,循环有效

while(*p)是什么意思
p明显是个指针,while(p)就是说指针如果有指向,就执行while下的语句,如果是0,也就是NULL,指针没有指向任何地址,也就是空指针。*p=head->next 这个可能是是树之类的数据结构。while(*p)就是当指针p有指向时,执行下面循环体的内容。while的用法:while(判断语句){ 执行语句\\循环体 } ...

while(*p)是什么意思?是bool型吗?怎么翻译呢?
p是一个指针,p的意思是p这个指针所指的内存单元存放的数值,假设,p所指区域存放的是0,那么条件就为假,while循环就停止执行,假设,p所指区域存放的是非零值,那么条件就为真,while循环就会继续执行~呵呵,就是这个意思,不知道您懂了吗,不懂的话就留言吧,我会关注你这个问题的,有问必答的哦~...

c语言问题,关于指针的问题
显然p是一个指针变量。while()循环括号里的返回值,为0或NULL时,while循环直接结束。一、比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。。;那么只有当p为空时,后面的printf才会执行。

...字符间有空格,请问遇到空格时,这个while里是真还是假?
while中的*p为真 while(*p) 是判断p是否指向字符数的结束位置 因为字符串的结束标志是'\\0',所以*p的值是假,而空格则是真

C语言中 while(*p)的作用是什么??
while( *p ) 就是判断 (*p) 的值只要不为0就会一直循环。实际上与while(*p!='\\0') 的意思是一样的,因为'\\0'的值也是0C语言中逻辑判断只有两种状态:零 和 非零非零就是 所有值不等于0的情况,称为“真”等于0的情况,称为“假”...

C语言问题详解
while('0') '0'对应的ascii十进制值肯定不是0,所以需要循环 while(‘\\0’) 这个判断可以参见上一条,需要循环 while(\\0) 这个属于数学判断,非0就是1呗,所以需要循环。while(*p++) 这种判断条件,则p应该是个指针,而且是一个指向数组的指针 所以,p所指向的下一个数组元素中的值...

C语言字符串的解释问题
\\0'},*p=s;\/\/定义s数组,p指针,让p指针指向s[0]while(strcmp(s,"END"))\/\/比较字符串s和字符串“END”,若相等则进入循环(估计有逻辑错误){ gets(s);\/\/从键盘(一般来说)键入一行字符 while(*p)\/\/p所指向的空间不是'\\0',则进入循环 putchar(*p++);\/\/输出p所对应的字符 };...

C语言的题,都不难,帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好...
a[][] 是一个二维数组,*p[3]这是定义一个Int型的指针数组,表示p[i]中存的是指针(地址),所以C正确,他是a[1][2]的地址存放到p[0]中。因为a二维数组的地址,p指向的是一维数组所以A,B,C错。第九题:fun函数的作用是把字符s接到字符t后面,所以在主函数中调用fun(ss,aa)后,ss=...

新手学C语言指针,请高手帮忙看看代码!
注意你定义的是一个整型数组,不是字符型,所以结束没有'\\0'的标志,你不能那样写while(p)是不对的,你输出35是碰着在内存里面的存储数组的地方的后面的第28个地方有一个\\0,这个数字是随即的应该~~你要想那样你吧改一下 include "stdio.h"main(){ char *p;int num=0;char a[]="1234567"...

相似回答