C语言中数组的定义怎么理解?

今天一起来分析C语言的数组。

以下内容,只代表个人观点,不一定对,仅供参考,随便看看。

C语言的构造类型的数据,有数组类型、结构体类型、共用体类型。

构造类型数据是由基本类型数据按一定规则组成的。

下面介绍一维数组、二维数组、多维数组以及字符数组的定义、初始化、引用及应用。

数组是一种构造类型的数据,通常用来处理具有相同属性的一批数据。

数组是一组相同类型的数的组合。

一维数组的定义格式为:

类型说明符 数组名[常量表达式];

它表示数组名为a,此数组有5个元素。

1、数组名的命名规则和变量名相同,遵循标识符命名规则;

2、数组名后是用方括弧括起来的常量表达式,不能用圆括弧;

3、常量表达式表示元素个数,即数组长度。在上面例子a[5]中,5表示a数组有5个元素,下标从0开始,这5个元素是,a[0],a[1],a[2],a[3],a[4]。注意不能使用数组元素a[5];

4、常量表达式中可包括常量和符号常量,不能包含变量。即在C语言中,不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。

下面这样定义数组是不行的:

5、数组必须先定义,后使用。只能逐个引用数组元素而不能一次引用整个数组。

数组类型 数组名 数组的长度,数组元素

数组定义时必须规定固定的长度,即数组长度必须是一个固定的常量,不能改变。

数组的赋值有两种方式:

方式一:在定义的同时,给各元素赋值;

方式二:定义以后对逐个数组元素进行赋值

1、在定义数组时对数组元素赋以初值,可以全部元素赋值,也可以部分元素赋值。

定义a数组有10个元素,但花括弧内只提供5个初值,表示只给前面5个元素赋初值后,5个元素值默认为0。

2、如果想使一个数组中全部元素值为0,

3、在对全部数组元素赋初值时,可以不指定数组长度。

1、二维数组定义的一般形式为

类型说明符 数组名[常量表达式][常量表达式]

2、二维数组元素的形式为:

数组名[行下标表达式][列下标表达式]

1)“行下标表达式”和“列下标表达式”,都应是整型表达式或符号常量。

2)“行下标表达式”和“列下标表达式”的值,都应在已定义数组大小的范围内。假设有数组x[3][4],则可用的行下标范围为0~2,列下标范围为0~3。

3)对基本数据类型变量所能进行的操作,也都适合于相同数据类型的二维数组元素。

1)按行赋初值:数据类型 数组名[行常量表达式][列常量表达式]={{第0行初值表},{第1行初值表},……,{最后1行初值表}};

赋值规则:将“第0行初值表”中的数据,依次赋给第0行中各元素;将“第1行初值表”中的数据,依次赋给第1行各元素;以此类推。

2)按二维数组在内存中的排列顺序给各元素赋初值

数据类型 数组名[行常量表达式][列常量表达式]={初值表};

赋值规则:按二维数组在内存中的排列顺序,将初值表中的数据,依次赋给各元素。

如对全部元素都赋初值,则“行数”可省略。

注意,只能省略“行数”。

用来存放字符的数组称为字符数组。字符数组类型的形式与前面介绍的数值数组相同。

char c[5][10]; //即为二维字符数组。字符数组也允许在类型说明时作初始化赋值。

当对全体元素赋初值时也可省去长度说明

字符串在C语言中没有专门的字符串变量, 通常用一个字符数组来存放一个字符串。

字符串总是以‘\0’作为串的结束符。因此当把一个字符串存入一个数组时, 也把结束符‘\0’存入数组,并以此作为该字符串是否结束的标志。

有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

C语言允许用字符串的方式对数组作初始化赋值。

用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。

除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出输入一个字符数组中的字符串, 而不必使用循环语句逐个地输入输出每个字符。

注意在本例的printf函数中,使用的格式字符串为“%s”, 表示输出的是一个字符串。

d=超出数组范围,值不确定。

1、数组元素下标是从0开始,上面程序案例uhcar niu[3]={3,6};定义数组niu的长度为3,也就是该数组有三个元素,依次为niu[0]、niu[1]和niu[2];

2、数组元素如果定义时没有赋值默认为0;

3、数组长度如果是n,那么数组元素个数只能是0到n-1,没有niu[n]这个元素。例如上面案例定义数组uhcar niu[3]={3,6};没有数组元素niu[3];因为该元素超出范围了,值不确定,有的编译器会直接报错。

2.2、数组的典型应用:

g=7;//字符串赋值的时候多了一个结束符'\0'

特例1:数组定义时同时赋值了,数组长度可以不写,默认为赋值的长度。详见例子第二行代码;

特例2:数组赋值为’3’表示为字符(ASCII码的字符’3’),而不是数字3;详见例子第三行代码;

特例3:数组在定义时赋值为字符串的话,如果定义时没有指定长度,那么真实的数组长度为字符串中字符数量+1,后面多了一个字符串结束符'\0',详见例子第五行代码。

3.1数组的定义和使用:

数组类型 数组名 数组长度 数组赋初值

niu[3]的值因为超出数组范围,值不确定。

期待您的未来,能够创造出更美好的世界。

本文章来自公众号老牛经济学原创

}

C语言中,数组是一个很重要的概念。

我们可以这样理解:数组,就是一个非常大的盒子,这个大盒子里面,可以装很多个小盒子。里面的小盒子,就是一个个数组元素。

我们来看一下这个程序:

上述C语言程序中,第5行,就是在定义一个数组。跟定义基础的变量一样,数组名称前面,要加上数据类型。这里的数组变量array的数据类型,是int,也就是说:这个数组里面的所有元素,都是int类型。

如果我们这样写:float array[3] , 那么这个数组,就是浮点型数组; 如果这样写:char array[3] , 那么这个数组就是字符型数组。

这里,我们将数组array初始化为了:第一个元素的值为:1;第二个元素的值为2;第三个元素的值为3

在调用数组的时候,比如:第7行,第8行,第9行,我们分别使用 array[0] 、array[1] 、 array[2] 来调用这个数组里面的值。中括号里面的数字,被称为:下标

调用的方法是这样: 数组的名字[下标]

第一个数组元素的下标,为0;第二个数组元素的下标,为1;第三个数组元素的下标,为2;... ... 依此类推。

如果要给数组赋值,可以参考如下代码:

上图C语言程序中,第7行、第8行、第9行,就是在给数组array赋值。在第5行定义数组的时候,我们并没有给数组初始化。(所谓初始化,就是在定义数组的时候,顺便给数组赋值)

如果数组没有被初始化,那么,它里面元素的值,都是不确定的。值或许都为0,也或许为一个随机值。总之,如果没有初始化,数组里面的值,是不确定的,具体是什么值,要看所使用的编译器。

每天晚上20:00我偶尔会开直播给大家分享C/C++游戏编程学习知识和路线方法,我会不定期更新最新的教程和学习方法,大家都是学习C/C++的,或是转行,或是大学生,还有工作中想提升自己能力的前端党,如果你是正在学习C/C++的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。 大家可以看我主页视频先学习一下。

}
数组做参数只要传递首个元素地址就可以了,所以参数一般直接写指针
}

我要回帖

更多关于 C语言定义double型数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信