求解,还不太清楚数组作为函数参数
求解,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, 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);
}
int square_sum(int a[], int n)
{
int i, sum = 0;
for (i = 0; i < NUM; i++)
sum += a * a;
return sum;
}
大哥,因为你传入的参数是指针(数组),例子:#include <stdio.h>
void func(int *n){
*n = 13;
}
int main()
{
int n = 7;
func(&n);
printf("%d", n);
return 0;
}输出结果:13 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的生存周期跟它不同,所以并无影响。
若是听不太懂,也没关系,小甲鱼后面会讲到的。
页:
[1]