使用函数实现数组元素的赋值

要求:首先要实现函数的赋初值
首先函数实现数组赋初值的时候,首先要看需要哪几个实参
1:数组
2:你赋值的数
但是元素个数需不需实参返回给函数呢?
来看下一段代码

#define _CRT_SECURE_NO_WARNINGS 1

#include
#include

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;
}

先不考虑定义函数的返回值,因为返回数组较为麻烦,在此研究问题可以不考虑,不会影响程序整体的效果。但是这个程序会出现使用函数实现数组元素的赋值_第1张图片
***只能给第一个元素赋值。
我们知道,当形参传给实参时,形参是实参的一份临时拷贝,对形参的改变不会影响实参的变化
同理,在一个函数内部求一个数组元素个数(主函数传递过来的数组)也是求不到的,在这个定义函数内部 sizeof(array)/sizeof(array[0])得到的结果是1.**所以,元素的个数一定要传,在自定义函数内部得到的函数元素个数是错误的。**下面是修改后代码

使用函数实现数组元素的赋值_第2张图片
这样就能正确的得到想要的结果啦。

你可能感兴趣的:(C语言,函数数组,赋值问题,函数实现数组元素的赋值)