数组基础介绍

本文详细解释了一维数组的创建、初始化方法,以及数据类型、输入输出和内存存储特性;接着介绍了二维数组的概念、创建示例,以及初始化、输入输出和内存中连续存储的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数组的概念

        数组是一组长度大于0的相同类型的元素的集合,分为一维数组和多为数组,多维数组中最常用的是二维数组。

2.一维数组

(1)一维数组的创建

基本语法:

type arr_name[整形常量值] 

形式讲解:

type:是数组所存储的数据类型;

arr_name:数组的名字标识符;

[ ]:[](下标引用操作符)中填写一个整形常量值;

(2)一维数组的初始化

<1>完全初始化

数组中元素的个数与下标相同

int arr[5] = {1,2,3,4,5};

 

<2>不完全初始化

数组中元素的个数小于下标(位初始化的地方用0补齐)

int arr2[6] = {1};

 

<3>错误初始化

数组中元素的个数大于下标(越界访问有些编译器不会报错,也要避免这种情况)

int arr3[3] = {1,2,3,4} 

 

(3)数组的数据类型

 数组也有类型,数组算是一种自定义类型去掉数组名留下的就是数组的类型。

 例如:

int arr1[10];
int arr2[20];
int arr3[5];

        arr1[1]的数据类型是int [10]

        arr2[2]的数据类型是int [20]

        arr3[3]的数据类型是int [30]

(4)一维数组的输入和输出

 输入代码:

#include<stdio.h>
int main()
{
	int arr[10] = {0};
	int i;
	for(i=0 ; i<10 ;i++)
	{
		scanf("%d",&arr[i]);
	}
}

 输出代码:

#include<stdio.h>
int main()
{
	int arr[10] = {0};
	int i;
	for(i=0;i<10;i++)
	{
		printf("%d",arr[i]);
	}
}

(5)一维数组在内存中的存储

#include<stdio.h>
int main()
{
	int arr[10] = {0};
	int i;
	for(i=0;i<10;i++)
	{
		printf("%p\n",&arr[i]);//地址用%p打印
	}
}

输出结果:

         从输出结果来看,随着下标的增加,地址由小到大变化的,并且发现每个元素之间相差4(int型占4个字节)由此不难看出数组在内存中是连续存放的

3.二维数组

 (1)二维数组的概念

        把一维数组作为元素的数组,就是二维数组

(2)二维数组的创建

type arr_name[整形常量值][整形常量值]
例如:
int arr[3][5];
char arr2[3][8];

        第一个[](下标引用操作符)代表行数

        第二个[](下标引用操作符)代表列数

        其余参数与一维数组一样

(3)二维数组的初始化

<1>不完全初始化
int arr1[3][5] = {3,9};

 <2>完全初始化
int arr1[2][4] = {1,2,3,4,5,6,7,8};

<3>按照行初始化
int arr1[4][4] = {{1,2},{3,4},{5,6},{}};

                                注:初始化的时候可以省略行,但不能省略列。

(4)二维数组的输入与输出

 输入代码

#include<stdio.h>
int main()
{
	int i,j;
	int arr[2][4] = {0};
	for(i=0 ;i<2 ;i++)
	{
		for(j=0 ;j<4 ;j++)
		scanf("%d",&arr[i][j]);
	}
}

 输出代码

#include<stdio.h>
int main()
{
	int i,j;
	int arr[2][4]={0};
	for(i=0;i<2;i++)
	{
		for(j=0;j<4;j++)
		printf("%d",arr[i][j]);
		printf("\n");
	}
}

(5)二维数组在内存中的存储

#include<stdio.h>
int main()
{
	int i,j;
	int arr[2][4]={0};
	for(i=0;i<2;i++)
	{
		for(j=0;j<4;j++)
		printf("%p\n",&arr[i][j]);
		printf("\n");
	}
}

 输出结果

 

        从输出结果来看,每行内部的元素都是相邻的,地址差四个字节,跨行位置的两元素,也相差4个字节,由此可见二维数组在内存中也是连续存储的 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值