如何迭代由函数返回的指针组成的数组? [重复]

问题描述 投票:0回答:1

我有一个名为

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 循环吗?

arrays c
1个回答
1
投票

一切都很好,直到我想循环遍历数组,其中 sizeof(num) 始终返回 8。

在您的代码中,

num
是一个指针。它的大小永远不会改变。 您无法从指针导出元素的数量。您需要通过另一个变量提供数字。

通过添加像

size_t *number_of_results
这样的参数,在函数返回之前将其设置为正确的数字。 或者通过向数组添加哨兵值。 例如。如果您不允许数组中存在负值,则可以使用
-1
标记最后一个条目。或者
0
,就像 C 中的字符串一样。

© www.soinside.com 2019 - 2024. All rights reserved.