将数组全部初始化为相同值
对于一般情况
一般是用函数,传什么数就初始化为什么数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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
将数组初始化为0~9
法一:在函数内循环
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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<stdio.h>
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;
}