C语言数组

1.数组的概念

数组是一组相同类型元素的集合

>数组中存放的是一个或多个数据,但数组元素个数不能为零。

>数组中存放的多个数据类型是相同的。

>数组分为一维数组和多维数组,多维数组比较常见的是二维数组。

2.一维数组的创建和初始化 

2.1 数组的创建
1  type name[常量值];
type是数组中存放数据的类型,可以是char,short,int double等,也可以是自定义类型
name是数组的名字
常量值是指定数组的大小
列如
char ch[8];
double scor[10];
2.2 数组的初始化以及其类型

>数组算是一种自定义类型,去掉数组名留下的部分极为数组的类型

》初始化如下

>数组的类型

1 int arr1[10];
2 double arr2[12];

arr1数组的类型是int [10]
arr2数组的类型是double [12]

3.一维数组的输出和打印

3.1 数组是有下标的,首元素的下标为0,末元素的下标为数组能储存元素个数减1。

而访问数组即用下标访问的。

访问如下

3.2数组的输出和打印
#include <stdio.h>
int main()
{

int arr[10]={0};

for(int i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}

for(i=0;i<10;i++)
{
printf("%d ",arr[i]);
}

return 0;
}

输出结果如下

4.一维数组的存储及元素个数的计算

4.1数组在内存中的存储
#include <stdio.h>
int main()
{

int arr[10]={0};
for(int i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}

for(i=0;i<10;i++)
{
printf("arr[i]=%p \n",arr[i]);//%p用来打印地址
}
return 0;
}

打印结果如下

从以上结果可以看出,数组随着下标增长,地址是由小到大变化的,并且两相邻的元素之间相差4,(因为一个整型为4个字节),所以数组在内存中是连续存放的。

4.2 用sizeof来计算数组元素的个数
#include <stdio.h>
int main()
{
int arr[]={1,2,3,4,5,6}
printf("%d",sizeof(arr[0]));//计算的是数组中单个元素的大小
printf("%d",sizeof(arr));//计算的是数组整体的大小
printf("%d",sizeof(arr)/sizeof(arr[0]));//二者相除极为数组中可存放的元素的个数
return 0;
}

这里的结果是6,表示数组arr中可以存放6个元素.

6.二维数组的创建

6.1把一维数组作为数组的元素,此时即为二维数组,二维数组作为数组的元素就被称为三维数组,二维数组以上的数组称为多维数组。

6.2二维数组的创建
type name[常量值1][常量值2]
type表示元素的类型
常量值1表示行数
常量值2表示列数
列如
int arr[3][4];
double arr2[4][3];

< 3表示arr数组有三行,4表示每行有4个元素

7.二维数组的初始化

二维数组的初始化与一维数组的初始化类似

7.1不完全初始化

7.2完全初始化

7.3按照行初始化

7.4初始化时省略行但不能省略列

8.二维数组的输出输入

8.1二维数组输出
#include <stdio.h>
int main()
{
int arr[3][5]={0};
int i=0;
for(i=0;i<3;i++)
{
for(int j=0;j<5;j++)
{
scanf("%d",&arr[i][j]);
}

}
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");

}

return 0;
}

输出如下

二维数组在内存中的存储与一维数组类似

9.C99中的变长数组

C99给了一变长数组,允许我们可以使用变量来指定数组的大小

int n=a+b;
double arr[n];
//arr数组的大小即为变量n来决定
//数组arr即为变长数组,他的长度取决于n,编译器无法事先确定,只能在运行时才知道,所以变长数组是不能初始化的。

gcc编译器上测试
#include <stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
int arr[n];
int i=0;

for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}

for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}

输入5,输出结果如下

好了,今天关于数组的分享就到这里了,祝大家生活愉快,身体健康,万事顺意,那我们就下次再见了!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值