当我最近看一些关于C指针的段落时,我发现了一些有趣的东西.它说的是这样的代码:
char var[10];
char *pointer = &var;
while(*pointer!='\0'){
//Something To loop
}
Run Code Online (Sandbox Code Playgroud)
可以变成这个:
//While Loop Part:
while(*pointer){
//Something to Loop
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,*指针是什么意思?
Lao*_*itt 14
while(x) {
do_something();
}
Run Code Online (Sandbox Code Playgroud)
do_something()只要x是真的,就会反复运行.在C中,"true"表示"不为零".
'\0'是一个空字符.在数值上,它是零(表示的位'\0'与零号相同;就像空格是数字0x20 = 32).
所以你有while(*pointer != '\0').虽然指向内存不是零字节.此前,我说的"真"的意思是"非零",因此比较x != 0(如果x是int,short等)或x != '\0'(如果x是char)相同,只是x内部的,如果,而等
你应该使用这种较短的表格吗?在我看来,没有.这使得阅读代码的人不太清楚其意图是什么.如果你明确地编写比较,那么循环的意图就更明显了,即使它们在技术上对编译器意味着相同的东西.
因此,如果你写while(x),x应该是一个布尔值或一个C int,它已经表示一个布尔值(一个真或假的概念).如果你写while(x != 0),那么你关心的x是一个非零整数并且正在做一些数字化的东西x.如果你写while(x != '\0'),那么x是一个char,你想继续前进,直到找到一个空字符(你可能正在处理一个C字符串).