阅读背景:

C语言 新手求教 while(*p++); 为何不等于while(*p!='\0') *p++;

来源:互联网 
RT
就是我想简化一下 p指 到字符串结束符 然而似乎并不可以
另外关于 while(*p++=*q++)  最后停止是q指向了'
RT
就是我想简化一下 p指 到字符串结束符 然而似乎并不可以
另外关于 while(*p++=*q++)  最后停止是q指向了'\0'  停止了 
可以这么理解么  
还有一个相似的 for(;a[i];) {......}
我看有一个程序 分号中间就是一个a[i[]这样的东西 是什么意思呢 也能起到判断'\0'的作用么...
望大佬指教 多谢! 

7 个解决方案

#1


用表达式的值作为条件进行判断。

#2


打错了 标题中 应该是while(*p!='\0') p++;  

#3


理解讨论之前请先学会如何 观察

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他! )

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

#4


引用
另外关于 while(*p++=*q++)  最后停止是q指向了'\0'  停止了 


是的


引用
还有一个相似的 for(;a[i];) {......}


表示当a[i] 非0时退出循环

'\0'实际是一个值为0的字符,所以可以用作循环判断

#5


楼上(#4)要表达的是:
表示当a[i] 为0时退出循环a[i]非 0时循环.

#6


第一个ASCII码,对应的字符是(Null),其实就是‘\0’,即空字符。
可以被当做判断的表达式。

#7


谢谢大家喽~~~ 

'  停止了  另外关于 w



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: