关于函数参数及其作用域的疑惑

题目:利用函数初始化一个数组并利用函数输出该数组。
我在编写的时候想着变量size在main函数里面(作用域在main函数的大括号里面),又在main函数里面调用initArray和outputArray这两个函数,可以直接用size。
是否函数在使用主函数里的变量时都要在函数声明及其调用时候要在后面的括号里写明参数类型及其变量名。就像我写的代码里面的size变量一样。
例:声明时:void initArray(int a[10],int n);。调用时:initArray(array,size);

img

img

#include
void initArray(int a[10]);//无法正常运行的代码 
void outputArray(int a[10]);
int main()
{
    int array[10];
    int size=10;
    initArray(array);
    outputArray(array);
    return 0;
}
void initArray(int a[10])//初始化数组 
{
        int i;
        for(i=0;iprintf("array[i]=");
            scanf("%d\n",&array[i]);
        }
}
void outputArray(int a[10])//输出数组 
{
        int i;
        for(i=0;iprintf("%3d",array[i]);
        }
}

如果你想在函数内部使用主函数中定义的变量,你需要将这些变量作为参数传递给函数。在函数声明时,你需要指定参数的类型和名称,这些参数将在函数内部使用。在函数调用时,你需要提供与参数类型和名称匹配的参数值。

以下是一个使用函数初始化数组并输出的示例代码:

#include <stdio.h>

// 初始化数组
void initArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        arr[i] = i + 1;
    }
}

// 输出数组
void outputArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int size = 5;
    int arr[size];

    // 初始化数组
    initArray(arr, size);

    // 输出数组
    outputArray(arr, size);

    return 0;
}


在上面的代码中,size 是在 main 函数中定义的,但是它被作为参数传递给 initArray 和 outputArray 函数。这两个函数使用这个参数来确定数组的大小,并对数组进行初始化和输出。

注意,在函数声明和函数调用时,参数类型和名称必须匹配。在函数内部,参数名仅用于访问传递给函数的参数值。因此,你可以在函数内部将这些参数视为普通变量。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^