如何使阵列可用于其他功能?

时间:2018-08-03 22:02:46

标签: c arrays function scope

我在main()函数中声明了一个数组,我需要在从main()调用的函数中访问它。如何使数组对函数可用?最好的方法是什么?我尝试使用static关键字,但是没有任何改变。我应该在main()之外声明数组以及被调用的函数吗?

2 个答案:

答案 0 :(得分:2)

如何使数组可用于该功能?

在C语言中,可以通过将变量的名称放在要调用的函数的括号中来将变量(如数组)传递给函数。

什么是最好的方法?

假设您有以下代码:

void INeedNums(int nums) {
    // Do something with them nums.
}
int main() {
    int aBunchofNums[] = {1,2,3,4};
    INeedNums(aBunchofNums);
}

此代码会将{1,2,3,4}的整个数组发送给函数以供使用。

我是否应该在main()之外声明数组以及要调用的函数?

您可以在main()函数外部声明它,使其成为外部变量。外部变量可以通过任何函数访问。

上面的代码将数组发送给函数,函数可以在其中使用它。请注意,该函数如何建立一个名为int nums的新变量来处理它,这意味着它没有使用完全相同的变量,这意味着当您在第二个函数中编辑数组时,它不会更改该数组。驻留在您发送给它的main()中。有多种方法可以更改此设置,即使用指针,例如P__J__的答案。

答案 1 :(得分:1)

您可以将其作为参数传递给其他函数,也可以将其全局声明。

示例-并练习以了解变量的范围:

int array[100]

int add(size_t first, size_t second, size_t result )
{
    array[result] = array[first] + array[second];
    return array[result];
}

int add1(int *array, size_t first, size_t second, size_t result )
{
    array[result] = array[first] + array[second];
    return array[result];
}


void foo1(void)
{
    int array[100];

    add1(array, 5, 7, 9);
    add(5, 7, 9);
}