数组的定义及初始化
一、数组的定义
要想把数据放入内存,必须先要分配内存空间。放入4个整数,就得分配4个int类型的内存空间:
int a[4];
就在内存中分配了4个int类型的内存空间,共 4×4=16 个字节,并为它们起了一个名字,叫a。
二、数组的初始化
数组初始化的四种方式
1. 直接给每个元素赋值 int array[4] = {1,2,3,4};
2. 给一部分赋值,后面的全部为0 int array[4] = {1,2};
3. 由赋值参数个数决定数组的个数 int array[] = {1,2};
4. 数组元素的值是随机分配的 int array[4] = {}; 当初始化参数时,推荐使用 int array[4] = {0};
5. 利用 memset 函数初始化 memset 函数声明为:void *memset(void *str, int c, size_t n)
将 str 中当前位置后面的 n 个字节 (typedef unsigned int size_t )用 c 替换并返回 str 。 int arr3[3]; memset(arr3, 0, sizeof(int) * 3);
memset 一般使用“0”初始化内存单元,通常是给数组或结构体进行初始化,或清空数组或结构体。
一般如 char、int、float、double 等类型的变量直接初始化即可,如果用 memset 的话反而显得麻烦。
6、for 循环初始化
int a[3];
for (int i = 0; i < 3; i++)
{
a[i] = i;
}
使用 for 循环的好处是:可以将每个元素设为不同的值。
三、数组的打印
1、按序号for循环打印
#include <stdio.h>
void main()
{
int i;
int a[10]={1,2,3,4,5,6,7,8,9,10};
for(i = 0 ;i < 10; i++)
{
printf("%d ",a[i]);
}
}
2、通过数组地址打印数组的值
#include <stdio.h>
void main()
{
int i;
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
p = a;
for( i = 0 ; i < 10 ; i++ )
{
printf("%d ",*(p+i) );
}
}
3、指针指向数组
void main()
{
int i;
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
for( p = a; p < (a+10) ;p++ )
{
printf("%d ",*p);
}
}