C 字符指针如何与while循环一起工作
在while循环中,当提到C 字符指针如何与while循环一起工作,c,pointers,char,C,Pointers,Char,在while循环中,当提到*s时,它表示s中包含的地址处的值,因此在第一种情况下,该值将为“a” 我的问题是,当循环检查它时,它如何检查字符的ASCII值以检查条件是否为真。是否有其他方法 main() { char str[] = "abcd" ; char *s = str; while(*s) printf ("%c",*s++) ; } 当您声明字符串变量时,如 char str[] = "abcd"; 这就像声明str[5]=“abcd\0” 因此,
*s
时,它表示s
中包含的地址处的值,因此在第一种情况下,该值将为“a”
我的问题是,当循环检查它时,它如何检查字符的ASCII值以检查条件是否为真。是否有其他方法
main()
{
char str[] = "abcd" ;
char *s = str;
while(*s)
printf ("%c",*s++) ;
}
当您声明字符串变量时,如
char str[] = "abcd";
这就像声明str[5]=“abcd\0”代码>
因此,在while循环中,它首先检查*s
的值,即“a”,在ascii表中转换为97。然后打印*s指针内的当前值,然后将指针增加1,这将导致下一个字符。当到达\0
时,循环退出,因为\0
等于0 当您声明字符串变量时,如
char str[] = "abcd";
这就像声明str[5]=“abcd\0”代码>
因此,在while循环中,它首先检查*s
的值,即“a”,在ascii表中转换为97。然后打印*s指针内的当前值,然后将指针增加1,这将导致下一个字符。当到达\0
时,循环退出,因为\0
等于0 while(conditon)
在C/C++中,如果条件!=0
由于它是一个未引用的字符*,这意味着它是一个1字节的值。范围为0-255
由于第一个值是“a”,这意味着它将在255之后将此表从值“a”(61)打印到“nbsp”(255),字符值将溢出到“0”或空字符,此时(条件)
将计算为false,程序将结束
while(条件)
在C/C++中,如果条件!=0
由于它是一个未引用的字符*,这意味着它是一个1字节的值。范围为0-255
由于第一个值是“a”,这意味着它将在255之后将此表从值“a”(61)打印到“nbsp”(255),字符值将溢出到“0”或空字符,此时(条件)
将计算为false,程序将结束
非零值表示为真。字符的值基本上是一个整数。表示字符串结尾(\0
)的nul字符的值为零。然后循环停止。非零值表示True。字符的值基本上是一个整数。表示字符串结尾(\0
)的nul字符的值为零。然后循环停止。您的意思是在a的情况下,*s将转换为97,然后进行计算吗?那么在这种情况下,如果我的字符串包含数字0,它会检查0或其ascii 48吗?是的,这就是我的意思。如果您的代码包含类似于charstr[]=“abc0123”
然后每个数字也将转换为各自的ASCII值,然后进行计算。您的意思是在a的情况下,*s将转换为97,然后进行计算吗?那么在这种情况下,如果我的字符串包含数字0,它会检查0或其ascii 48吗?是的,这就是我的意思。如果您的代码包含类似于charstr[]=“abc0123”代码>然后每个数字也将转换为各自的ASCII值,然后进行计算。不完全是这样。代码不增加*s的值,只增加s的值。因此,它不是“从61到255”,而是打印字符串,然后结束。而且,该ascii表已经过时。这里有一个更新版本的链接:不完全是。代码不增加*s的值,只增加s的值。因此,它不是“从61到255”,而是打印字符串,然后结束。而且,该ascii表已经过时。以下是指向更新版本的链接: