【发布时间】:2015-10-08 14:17:57
【问题描述】:
如果我需要在 C 中迭代一个数组,我可以这样做:
void uselessTest(const char *p)
{
while(*p)
{
++p;
}
}
我想知道这意味着什么:
- 它是否在每个循环中测试
if (*p != null)? - 如果是
p = p + 1,那是什么意思? p 是数值吗?*p应该是指向的值,p应该是指针的地址?那么在这个循环中p发生变化而*p保持不变?
【问题讨论】:
-
这似乎不会遍历任何 array,而是更具体地说是遍历一个以零结尾的 C 字符串。 (在函数的末尾,它指向最后一个字符之后的字符。)
-
C 中的术语与某些术语有些混淆。例如,术语“null”可以有两种含义,或者作为空 指针 或作为终止字符串的空 * 字符。对于您的循环条件,测试的不是空指针而是空字符。
-
谷歌“指针算法”。
-
关于
p++表达式,搜索并阅读指针算法。