【发布时间】:2023-03-13 05:12:01
【问题描述】:
This is a code from geeksforgeeks计数排序实现:
已经使用下面的 for 循环来遍历一个字符串 -
char arr[] = "geeksforgeeks";
for(i = 0; arr[i]; ++i)
++count[arr[i]];
从谷歌搜索我可以理解这个条件隐含地计算为arr[i]!='\0'。我理解正确了吗?
如果我要使用类似的 for 循环来遍历整数数组,它会评估为 arr[i]!=0 吗?
或者当我们不知道它的大小时,有没有更好的方法来遍历整数数组。我是初学者,请尽量提供不涉及C语言高级数据结构的建议。
【问题讨论】:
-
这取决于:0 是数组中的有效值吗?如果是这样,您显然不能将其用作数组末尾的标记
-
这是一个字符数组,而不是整数。它起作用的原因是因为数据是一个以空字符结尾的字符串。您基本上已经实现了
strlen功能。所以不清楚你的意思是“当我们不知道它的大小时,有没有更好的方法来迭代整数数组”。 -
比如我有一个数组,arr[] = {1,2,3,4};而且我不想计算数组大小来遍历数组。我怎么能像他们在我引用的例子中那样做呢。
-
@john 如果你有
arr[] = {1,2,3,4};,那么bytes 中数组的大小是sizeof(arr),数组中的元素数是sizeof(arr) / sizeof(arr[0])。跨度> -
不确定这个问题是如何重复的。我要问的问题是关于在大小为“未知”时迭代数组。我没有问“如何计算数组的大小”的问题。无论如何,我感谢所有提供解释的人。它通过提及哨兵给了我一个很好的方向:) 谢谢大家!