版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
要求:首先要实现函数的赋初值
首先函数实现数组赋初值的时候,首先要看需要哪几个实参
1:数组
2:你赋值的数
但是元素个数需不需实参返回给函数呢?
来看下一段代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<Windows.h>
int Init(int array[],int set)
{
int i;
int sz = sizeof(array) / sizeof(array[0]);
for ( i = 0; i < sz; i++)
{
array[i] = set;
}
}
int main()
{
int arr[] = { 0,4,8, };
int num;
printf("请输入你想给数组赋的值");
scanf("%d", &num);
Init(arr, num);
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d\n", arr[i]);
}
system("pause");
return 0;
}
先不考虑定义函数的返回值,因为返回数组较为麻烦,在此研究问题可以不考虑,不会影响程序整体的效果。但是这个程序会出现
***只能给第一个元素赋值。
我们知道,当形参传给实参时,形参是实参的一份临时拷贝,对形参的改变不会影响实参的变化
同理,在一个函数内部求一个数组元素个数(主函数传递过来的数组)也是求不到的,在这个定义函数内部 sizeof(array)/sizeof(array[0])得到的结果是1.**所以,元素的个数一定要传,在自定义函数内部得到的函数元素个数是错误的。**下面是修改后代码
这样就能正确的得到想要的结果啦。