C语言初学者r 2023-03-12 14:20 采纳率: 91.7%
浏览 13
已结题

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

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

img

img

#include<stdio.h>
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;i<size;i++)
        {
            printf("array[i]=");
            scanf("%d\n",&array[i]);
        }
}
void outputArray(int a[10])//输出数组 
{
        int i;
        for(i=0;i<size;i++)
        {
            printf("%3d",array[i]);
        }
}

  • 写回答

2条回答 默认 最新

  • 隔壁好友沈叔叔 2023-03-12 14:47
    关注

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

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

    #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 函数。这两个函数使用这个参数来确定数组的大小,并对数组进行初始化和输出。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日