首页 > 解决方案 > 将方法调用中的 int[] 初始化为参数

问题描述

我有这样的方法:

int find_min(int[]){

   //Do Something
}

我必须这样打电话:

int distance = find_min({1,2,3});

我该怎么做?

标签: arrayscfunction

解决方案


我有这样的方法:

C 没有方法,只有函数。

要将整数数组传递给函数,可以将其作为指针或数组传递。不管怎样,你必须给它一个名字。

  • 作为指针int find_min(int *foo)
  • 作为一个数组int find_min(int foo[])

两者的问题是您不知道数组有多大。您还必须传递数组的大小。

int find_min(int foo[], size_t size) {
    int min = INT_MAX;
    for( size_t i = 0; i < size; i++ ) {
        if( foo[i] < min ) {
            min = foo[i];
        }
    }

    return min;
}

调用它,你几乎在那里。数组语法{...}用于初始化。您需要先将其分配给一个变量。

    int a[] = {3, 1, 2};
    int min = find_min(a, 3);
    printf("%d\n", min);

您也可以使用 C99 中引入的“复合文字”,但最好暂时将其留作好奇。

    int min = find_min((int []){3, 1, 2}, 3);

推荐阅读