c++ 数组置0_鸣小亮C语言笔记(5)——数组

2ec841cea87c5779c9a7a45a34fa34be.png

Hi,技术菌团里刚学数组的小伙伴们,你们数组的基础知识掌握的怎么样呢,本期的数组语言笔记能不能帮到你们呢? 数组是一组有序数据的集合。数组中每一个元素都属于同一个数据类型,且不能把不同类型的数据放在同一个数组中。 01 一维数组

一维数组它的元素只需要用数组名加一个下标,就能唯一确定。

0017f66c469b080c9de24027c144d21a.png

定义一维数组的一般形式为:类型说明符 数组名【常量表达式】

例如:

int a[10];

表示定义了一个整型数组,数组名为a,此数组包含十个整型元素;而且要注意,该数组下标是从0开始的,这10个元素a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。上面的定义呢,就不存在数组元素a[10]。

那么数组名命名规则是什么呢?
其实数组名的命名规则和变量名相同,都遵循标识符命名规则。

数组的定义需要注意什么?
常量表达式可以包括常量和符号常量,例如:

int a[6+8];

该行代码就是合法的。
但需要注意的是不能包含变量。

例如:int a[n]; 这是不合法的。

还有就是,C语言不允许对数组的大小作动态定义,也就是说数组的大小不依赖于程序运行过程中变量的值。

例如:

int n;scanf("%d",&n);int a[n];

上述定义数组的代码是不对的,初学者一定不要犯这样的错误

c091df6c33687af305ab2cf739a640a2.png

在定义数组并对其赋值后,就可以引用数组的元素了。
引用数组元素形式如下:数组名【下标】
例如:

int a[10];             //前面有int,这是定义数组,指定数组包含十个元素t=a[6];        //这里的a[6]表示引用a数组中序号为6的元素

8071d35225ef8e6a747aa19a4782d876.png

为了使程序简洁,常在定义数组的同时给元素赋值,这称为元素的初始化。1. 在定义数组时对全部数组元素赋予数值。例如:

int a[10]={0,1,2,3,4,5,6,7,8,9};

将各元素初值放在一对花括号里,数据间用逗号分隔。2. 可以只给数组一部分元素赋值。例如:

int a[10]={0,1,2,3,4}

上述表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0.3. 如果使一个数组中的全部元素值为0,可以写成:

int a[10]={0,0,0,0,0,0,0,0,0,0}或int a[10]={0};

4. 对全部元素赋初值时,由于数据的个数已经确定,所以可以不指定数组长度。

例如:

int a[ ]={1,2,3,4,5};
02 二维元素

二维元素常称为矩阵。

1b35131f633165adcd06d9faa3849765.png

二维数组定义的一般形式:类型说明符 数组名【常量表达式】【常量表达式】
二维数组基本概念与方法和一维数组相似。

c27868ab4e4e771b732dbea4a7268c0a.png

二维数组元素的表达形式为:数组名【下标】【下标】

例如,a[2][3] 表示a数组中序号为2的行中序号为3的列的元素。
数组元素可以出现在表达式中,也可以被赋值。

例如

b[1][2]=a[2][3]/2

但要注意的是,在引用数组时,下标值应在已定义的数组大小的范围内。

例如:

int a[3][4];           //定义a为3x4的二维数组……a[3][4]=3;             //不存在a[3][4]元素

在上述定义中,数组a可用的行下标范围在0 ~ 2,列下标范围在0 ~ 3,用a[3][4]表示元素显然超过了数组的范围。

6fc7a6809562104dcf43f47a7f8b3051.png

1. 分行给二维数组赋初值。

例如:

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

2. 可以将所有元素都写在一个花括号里,按数组元素在内存里的排列顺序对各元素赋初值。

例如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

但该方法和第一种比起来,写起来容易遗漏也不好检查。3. 可以对部分元素赋初值。

例如:

int a[3][4]={{1},{5},{9}};

他的作用只是对各行的第一列(即序号为0的列)的元素赋初值,其余元素自动为0。
也可以对各行的某一元素赋初值,

例如:

int a[3][4]={{1},{0,6},{0,0,11}};

初始化的元素如下:
1 0 0 0
0 6 0 0
0 0 11 0
当然了,也可以对某几行元素赋值:

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

数组元素为:
1 0 0 0
5 6 0 0
0 0 11 04. 如果对全部元素都赋初值,则定义数组时对第一维长度可以不指定,但第二维长度不能省。

例如:

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

与下面的定义等价

int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

03 字符数组

C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。

44877148cd87ff73af06b20f8be5e886.png

用来存放字符数据的数组是字符数组。在字符数组中一个元素内存放一个字符。

例如:

char c[10];c[0]='I';c[1]=' ';c[2]='a';c[3]='m';c[4]='';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';

由于字符型数据是以整型形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据。

例如:

int a[10];c[0]='a';

1fbc2b1d8c5c7bbcaae5f5c6f3b07f8f.png

对字符数组初始化,把各个字符依次赋给数组中各元素。

例如:

char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};

e8b8ba6f4c8ac147dfda804a8ddaccf8.png

1. 逐个字符输入输出。用格式符“%d”输入或输出一个字符。

例如:

char str[6];int i;for(i=0;i<6;i++)        scanf("%c",&str[i]);           //字符数组输入for(i=0;i<6;i++)        printf("%c",str[i]);           //字符数组输出

2. 将整个字符串一次输入或输出,用“%s”格式符。

例如:

char str[6];scanf("%s",str);               //字符串输入printf("%s",str);              //字符串输出

由于字符数组名表示的就是数组的首地址,所以以%s的格式输入输出一个字符串时,字符数组名前面不能再取地址符号“&”。

本期语言笔记到这里就结束了,我们下期见!如果有疑问可以在技术菌团官方QQ群 (655575022) 里讨论咨询。

fe575a22d74fb950bde431e6cbb6aa17.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值