浅谈C语言——正式步入C语言学习(3)

数组:

今天上新较晚,学习内容较多且有些绕,知识点更加深入,且更加重要,此次阅读约为12分钟!

本文章参考《C语言程序设计现代方法(第二版)》以及根据自己所学的总结,不正确或者不适当的地方欢迎批评指正,主要以学习总结以及应用为主,在深入学习的同时也会及时更正不适合的地方。
数组在C语言中占有更重要的角色。

基础

1、聚合变量:可以存储一组一组数值
两种聚合类型:1、数组 2、结构
一维数组:存储一维数列中数据的集合,先定义后使用,每个数据具有相同的数据类型,这些数据值称为元素。
一般形式:类型说明符 数组名[整型常量表达式];
举例说明一下:
在这里插入图片描述
上表表示十个变量,假设为int变量。即:int a[10];
当对一个聚合变量进行定义时,当全局定义时推荐宏定义定义:
例:

#define N 10
int a[N];

而接下来这个例子定义时是经常出现错误的:

int N = 10;
int a[N];/*这里的N不是整型常量*/

这是为什么呢?
答:学习宏定义时,宏定义是在结构体之外进行全局变量,一旦宏定义结束后,在结构体内怎么运算,怎么循环,他都是保持这个定义的数不变;再说在结构体内定义,往往在运算时会出现,定义的数值出现变化,在外表看来他是定义了一个数值,但是你会发现你其实定义的仍然是一个变量,在一维数组定义时,必须是整型常量表达式

一维数组

数组下标:为了存取特定的数组元素,可以在写数组名的同时在后边加上一个用方括号围绕的整数值。一般数组都是从a[0]开始的。
在这里插入图片描述

在更多方面,数组一般与循环语句进行搭配使用,如for语句,来看下列一个例子:

/*正序输入,倒序输出*/
#include<stdio.h>
#define N 5
int main()

{
	int a[N],i;
	printf("请输入%d个数:\n",N);
	for(i=0;i<N;i++)
	{scanf("%d",&a[i]);
	}
	printf("倒序输出为:\n");
	for(i=N-1;i>=0;i--)
	{printf("%d\n",a[i]);
	}
	return 0; 
}

在这里插入图片描述

数组初始化:

简单而言,就是用大括号括起来的常量表达式列表,常量表达式之间用逗号进行分隔:

Int a[10]={1,2,3,4,5,6,7,8,9,10};
Int a[10]={1,2,3,4,5,6}//相当于{1,2,3,4,5,6,0,0,0,0};
Int a[5]={0}//相当于{0,0,0,0,0};

当然也可以指定初始化式
例如:

int a[12]={[2]=24[7]=9[14]=48};`

没有指定的元素均默认为 0。

多维数组:

为了访问i行j列的元素,需要写成m[i][j]的形式,表达式m[ i ]指明了数组m的i行,而m[ i ][ j ]则选择了此行的第j个元素。
如m[ 5 ][ 9 ],仍然从0开始算起,在C语言中是行主序开始计算的,第0行开始算起。
在这里插入图片描述

多维数组初始化:

(1)将所有数据写一块
和一维数组相类似,即

int a[2][3] = {1,2,3,4,5,6};
int a[2][3]={1,2,3,4}//最后两元素为0  

(2)f分行给数组元素赋值

Int a[2][3] = {{1,2,3},{4,5,6}};

图解为:
在这里插入图片描述
(3) 为所有数组元素赋值:行下标可以省略,列下标不可省略。
如:int a[ ][3] = {1,2,3,4,5,6}
因为初值个数为6个,列数为3,所以系统自动识别为行数为2,即2行3列。
实例如下:

#include<stdio.h>

int main()

{
int a[2][3],b[3][2];
int i,j;
printf("输入数组a:\n");

for(i=0;i<2;i++)
{
	for(j=0;j<3;j++)
	{
	scanf("%d",&a[i][j]);//开扩地址,写入元素 
	}
	
}

printf("数组a如下:\n");

for(i=0;i<2;i++)
{
	for(j=0;j<3;j++)
	{
		printf("%4d",a[i][j]);//输出2行3行列 
	}
	printf("\n");
}

for(i=0;i<2;i++)
{
	for(j=0;j<3;j++)
	{
		b[j][i]=a[i][j];//交换元素 
	}
}
printf("\n转存后,数组b如下:\n");
 
 for(i=0;i<3;i++)
{
	for(j=0;j<2;j++)
	{
		printf("%4d",b[i][j]) ;//转存成功,转为3行2列 
	}
		printf("\n");
}
	printf("\n");
	return 0;
}

在这里插入图片描述

看到这里是不是又学到了很多呢?
我认为是的,本次内容确实对于初学者来说是比较不好理解的,但是这个也是很重要的,希望多看几遍哦,慢慢就会了,也不要着急哦。
好了,看到这里别忘了点个赞哦,小编一直不断学习,共同进步,加油! 别忘了点个赞,可以私信或者评论哦,下期再见哦!

猜你喜欢

转载自blog.csdn.net/weixin_43540527/article/details/107920583
今日推荐