gpt4 book ai didi

c - while(*pointer) 在 C 中合法吗?

转载 作者:行者123 更新时间:2023-12-04 15:28:13 25 4
gpt4 key购买 nike

我最近遇到了很多使用以下代码的代码片段:

while (*pointer) { 
... ++pointer;
}

我和我的讲师一起检查了执行这样的操作是否好和“合法”,因为我认为在指针指向整数数组的情况下条件不会停止。

我无法得到明确的答案,如果使用这种情况是正确的以及为什么条件有效,我将不胜感激,因为不确定数组末尾是否为 0/NULL 将停止条件。

提前致谢。

最佳答案

良好且合法,是的。这个用的很多。

一个例子,你想使用指针而不是索引(有时索引有一些优势)。

计算字符串中*的个数

int counstar(char *s) {
int n = 0;
while(*s) if(*s++ == '*') n++;
return n;
}

通常,(约定)C 字符串以 '\0' 结尾,因此您知道它在哪里结束,而我只是 if (*s) 就足够了。

对于整数(以及除字符串以外的任何值),除非指定(例如最后一个数字是 0),否则您不知道数组的大小,需要一个变量来告知大小.但是,如果您知道最后一个为零,例如,算法将类似于上面的字符串 1。

将x加到n个整数上

void addx(int *a, int x, int n) {
while (n--) *a++ += x;
}

如果您知道最后一项始终是 0(并且不递增)

void addx(int *a, int x) {
while (*a) *a++ += x;
}

关于c - while(*pointer) 在 C 中合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61834245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com