用函数初始化数组

将数组全部初始化为相同值

对于一般情况

一般是用函数,传什么数就初始化为什么数

#define _CRT_SECURE_NO_WARNINGS 1
#include
void init(int arr[], int len, int num)
{
	int i;
	for (i = 0; i < len; i++)
	{
		arr[i] = num;
	}
}
int main()
{
	int arr[10];
	int len = sizeof(arr) / sizeof(arr[0]);
	init(arr, len, 0);
	int i;
	for (i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

对于需要初始化为0或-1的情况

可以用memset

void * memset ( void * ptr, int value, size_t num );

这是将ptr指向的空间的前num个字节的每一个字节都改为value

例如memset(arr,0,16)表示把arr指向的前16个字节都改为0,注意:前16给字节对应整型就是4个整型数,即4个元素

所以memset(arr,1,4*sizeof(int))表示把16个字节都改为1,所以每一个整型数字都变成了用16进制表示的01 01 01 01,而不是1。

如果想把arr数组初始化为-1(即二进制的1111 1111 1111 1111 1111 1111 1111 1111),就相当于把每个字节初始化为255

用函数初始化数组_第1张图片

将数组初始化为0~9

法一:在函数内循环

#define _CRT_SECURE_NO_WARNINGS 1
#include
void init(int arr[], int len)
{
	int i;
	for (i = 0; i < len; i++)
	{
		arr[i] = i;
	}
}
int main()
{
	int arr[10];
	int len = sizeof(arr) / sizeof(arr[0]);
	init(arr,len);
	int i;
	for (i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

法二:循环调用函数

#define _CRT_SECURE_NO_WARNINGS 1
#include
void init(int arr[], int i)
{
	arr[i] = i;
}
int main()
{
	int arr[10];
	int len = sizeof(arr) / sizeof(arr[0]);
	int i;
	for (i = 0; i < len; i++)
	{
		init(arr, i);
	}
	for (i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

你可能感兴趣的:(算法,数据结构)