我有一个名为
int *abc()
的函数,它返回一个指针数组,我将其称为 int *num = abc();
一切都很好,直到我想循环遍历数组,
sizeof(num)
返回8,那么strlen(num)
是一个不错的选择吗?或者有更好的选择吗?.
int *abc() {
return [1,2,3,4];
}
int main() {
int *num = abc();
for (int i=0; i < sizeof(num); i++) {
printf("blah blah blah");
}
return 0;
}
我的问题是我应该如何循环它? c 没有任何类型的 foreach 循环吗?
一切都很好,直到我想循环遍历数组,其中 sizeof(num) 始终返回 8。
在您的代码中,
num
是一个指针。它的大小永远不会改变。
您无法从指针导出元素的数量。您需要通过另一个变量提供数字。
通过添加像
size_t *number_of_results
这样的参数,在函数返回之前将其设置为正确的数字。
或者通过向数组添加哨兵值。
例如。如果您不允许数组中存在负值,则可以使用 -1
标记最后一个条目。或者 0
,就像 C 中的字符串一样。