关于return语句的问题
我没能完全看出来这串代码为什么可以算出字符串的长度while那里加加的优先级是比*的高吗?优先级是从右往左吗?
return语句那里,是两个地址相减吗
#include <stdio.h>
int fun(char *x)
{
char *y = x;
while (*y++)
{
};
return (y - x - 1);
}
int main(void)
{
char a[] = {"Hello"};
printf("%d", fun(a));
return 0;
} 我们知道,在C语言中,字符串以'\0'为结束符,而'\0'就是0
所以这个代码中让y++,然后用*取值,取到'\0'就会跳出while循环(这里先做y++)
y是字符串'\0'的位置,而x是字符串的开始位置,所以y-x-1就是字符串的长度 {:10_250:} 本帖最后由 桃花飞舞 于 2022-9-17 23:44 编辑
一楼+1,,不过y++应该是先用后加,也就是先*y再偏移指针。while(*y++)即便是while(*(y++))也是先给y取值再给y加加 {:5_108:}
页:
[1]