Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当我们不知道数组的大小时,如何遍历整数数组?_C_Arrays_Loops - Fatal编程技术网

C 当我们不知道数组的大小时,如何遍历整数数组?

C 当我们不知道数组的大小时,如何遍历整数数组?,c,arrays,loops,C,Arrays,Loops,计数排序实现: 用户已经使用下面的for循环来迭代字符串- char arr[] = "geeksforgeeks"; for(i = 0; arr[i]; ++i) ++count[arr[i]]; 通过谷歌搜索,我可以理解这个条件隐式地计算为arr[I]!='\0'。我理解对了吗? 如果我使用一个类似的for循环来迭代整数数组,它的计算结果会是arr[I]=0 或者,当我们不知道整数数组的大小时,有没有更好的方法来遍历它。我是一名初学者,请尝试提供不涉及C中高级数据结构的建议。除非

计数排序实现:

用户已经使用下面的for循环来迭代字符串-

char arr[] = "geeksforgeeks";

for(i = 0; arr[i]; ++i)
   ++count[arr[i]];
通过谷歌搜索,我可以理解这个条件隐式地计算为
arr[I]!='\0'
。我理解对了吗? 如果我使用一个类似的for循环来迭代整数数组,它的计算结果会是
arr[I]=0


或者,当我们不知道整数数组的大小时,有没有更好的方法来遍历它。我是一名初学者,请尝试提供不涉及C中高级数据结构的建议。

除非您确定数组末尾有某种哨兵值,否则您无法迭代数组,除非您知道其大小

对于字符串,sentinel值的示例是
'\0'

当您想要使用整数数组时,您应该同时保留数组和大小。这就是为什么将数组作为输入参数的函数使用指针和
int

void example(int* array, int size) { /* ... */ }

除非您确定在数组的末尾有某种类型的哨兵值,否则除非您知道数组的大小,否则无法在数组上迭代

对于字符串,sentinel值的示例是
'\0'

当您想要使用整数数组时,您应该同时保留数组和大小。这就是为什么将数组作为输入参数的函数使用指针和
int

void example(int* array, int size) { /* ... */ }

是的,计算结果为零的整数表达式将被
for
构造视为
false
,并结束循环

由于字符串由值为0的
'\0'
字符终止,因此可以检测字符串的结尾

是的,您可以使用它来迭代任何整数(或指针,其中
NULL
被视为
false
)数组的数组,但当然,用零终止此类数组不太常见(因为零是一个非常有用的整数)


如果您可以使用其他值来标记结束(这称为),您当然可以使用该值,而不是长度或零。零没有什么神奇之处,只是对于字符串它是约定的,因此得到了很好的支持。

是的,计算结果为零的整数表达式将被
for
构造和结束循环视为
false

由于字符串由值为0的
'\0'
字符终止,因此可以检测字符串的结尾

是的,您可以使用它来迭代任何整数(或指针,其中
NULL
被视为
false
)数组的数组,但当然,用零终止此类数组不太常见(因为零是一个非常有用的整数)


如果您可以使用其他值来标记结束(这称为),您当然可以使用该值,而不是长度或零。零没有什么神奇之处,只是对于字符串它是约定的,因此得到了很好的支持。

这取决于:0在数组中是有效值吗?如果是这样,则不能将其用作数组结尾的标记。这是一个字符数组,而不是整数数组。它工作的原因是因为数据是以null结尾的字符串。您基本上实现了
strlen
功能。所以我们不清楚你所说的“当我们不知道整数数组的大小时,有没有更好的方法来迭代它”是什么意思;我不想计算数组大小来遍历数组。我怎么能像我引用的例子中那样去做呢。@john如果你有
arr[]={1,2,3,4}
那么数组的字节大小是
sizeof(arr)
,数组中的元素数是
sizeof(arr)/sizeof(arr[0])
。不确定这个问题是如何重复的。我要问的问题是,当数组的大小为“未知”时,如何迭代数组。我没有问“如何计算数组大小”的问题。无论如何,我感谢所有提供解释的人。它通过提到哨兵给了我一个很好的方向:)谢谢大家!这取决于:0是数组中的有效值吗?如果是这样,则不能将其用作数组结尾的标记。这是一个字符数组,而不是整数数组。它工作的原因是因为数据是以null结尾的字符串。您基本上实现了
strlen
功能。所以我们不清楚你所说的“当我们不知道整数数组的大小时,有没有更好的方法来迭代它”是什么意思;我不想计算数组大小来遍历数组。我怎么能像我引用的例子中那样去做呢。@john如果你有
arr[]={1,2,3,4}
那么数组的字节大小是
sizeof(arr)
,数组中的元素数是
sizeof(arr)/sizeof(arr[0])
。不确定这个问题是如何重复的。我要问的问题是,当数组的大小为“未知”时,如何迭代数组。我没有问“如何计算数组大小”的问题。无论如何,我感谢所有提供解释的人。它通过提到哨兵给了我一个很好的方向:)谢谢大家!这个问题以前被问过很多次,并且有很多重复的问题,包括高(+500)票的问题。您是一位声誉卓著的资深会员,因此获得了执行以下操作的特权和理解。通过投票以重复方式结束而不是回答来减少重复,从而改善StackOverflow。这样的行动将极大地改善社区,但对你自己的不利程度微乎其微。谢谢。@2501:我认为这是一个很好的机会来解释OP和哨兵价值观的概念。你在结束问题时使用的副本没有提到这个概念,这是w