鱼C论坛

 找回密码
 立即注册
查看: 910|回复: 2

求解,还不太清楚数组作为函数参数

[复制链接]
发表于 2021-12-12 10:58:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求解,array_input(a, n)传递的是数组a,那这个参数a不应该就是array_input()的局部变量吗?为什么参数a存放的值还可以存放到数组a里面?

#include<stdio.h>
#define NUM 6
void array_input(int a[], int n);
int square_sum(int a[], int n);
int main()
{
    int a[NUM], n = NUM;
    printf("请输入整型数组的%d个元素:\n", NUM);
    array_input(a, n);
    printf("数组a的各元素平方和:%d", square_sum(a, n));
    return 0;
}
void array_input(int a[], int n)
{
    int i;
    for (i = 0; i < NUM; i++)
        scanf("%d", &a[i]);
}
int square_sum(int a[], int n)
{
    int i, sum = 0;
    for (i = 0; i < NUM; i++)
        sum += a[i] * a[i];
    return sum;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-12 11:08:34 | 显示全部楼层
大哥,因为你传入的参数是指针(数组),例子:
#include <stdio.h>

void func(int *n){
    *n = 13;
}

int main()
{
    int n = 7;
    func(&n);
    printf("%d", n);
    return 0;
}
输出结果:
13
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-13 17:50:46 | 显示全部楼层
array_input(int a[], int n)中的a是局部变量没错,
但你这个问题的迷惑性,在于main函数中定义了同名的数组a;
你要注意这两个同名的数组a,代表的意思不同;

在array_input(int a[], int n)中的a是局部变量没错,同时它也是一个形式参数;
而在main函数中通用array_input(a, n);这里的a,实际上就是在main中定义的数组,
跟你想像中的不是一个,它才是实际参数,所以可以对它进行修改。

另外,你可能会问,为啥会有两个同名名字的变量,这不是重复定义啦了吗?
当然不是,就像你说的在array_input()子函数中数组a是的局部变量,
它的生存周期只有在这个子函数中,
而mian函数中的数组a的生存周期跟它不同,所以并无影响。
若是听不太懂,也没关系,小甲鱼后面会讲到的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-18 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表