首页 > 解决方案 > 循环遍历C中的数组

问题描述

假设我想遍历一个数组,所以我使用了一个基本的 for 循环并使用索引访问其中的每个元素但是如果我不知道我的数组有多长会发生什么?

#include <stdio.h>
#include <stdlib.h>

int main(){
    int some_array[] = {2,3,5,7,2,17,2,5};
    int i;

    for (i=0;i<8;i++){
        printf("%d\n",some_array[i]);
    }

    return 0;
}

这只是一个简单的例子,但如果我不知道数组有多大,那么如何在循环中放置正确的停止参数?

在 Python 中,这是不需要的,因为 StopIteration 异常开始了,但是我如何在 C 中实现它?

标签: cloops

解决方案


这样做:

for (i=0; i<sizeof(some_array)/sizeof(some_array[0]); i++){
        printf("%d\n",some_array[i]);
}

但请注意。如果将数组传递给函数,它将不起作用。如果你想在函数中使用它,那么编写函数,以便你也将大小作为参数传递。像这样:

void foo(int *arr, size_t size);

并这样称呼它:

foo(some_array, sizeof(some_array)/sizeof(some_array[0]));

但是如果你有一个只接受一个指针的函数,那么绝对没有标准的方法来找出它的大小。您必须自己实施。


推荐阅读