C--数组

一、一维数组

1、一维数组的定义方式

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

2、举例

//
int a[10]; 说明整型数组 a,有 10 个元素。
float b[10],c[20]; 说明实型数组 b,有 10 个元素,实型数组 c,有 20 个元素。
//

3、数组元素的一般形式为:

//
数组名[下标]
//例如 a[i]

4、初始化赋值的一般形式

//
类型说明符 数组名[常量表达式]={值,值……值};
//
//
int a[10]={ 0,1,2,3,4,5,6,7,8,9 };
//

 

二、多维数组

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

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

2、理解

形式如int a[2][3];表⽰声明了⼀个⼆维数组对象a,其类型为int[2][3],表⽰含有2个int[3]类型的数组。习惯上,我们很多时候也会将其描述为具有2⾏3列的int类型元素的数组。不过⽆论怎么描述,有⼀点必须清楚,那就是数组对象a的每个元素都是int[3]类型a[0]表⽰数组a的0号元素,它是⼀个具有3个int元素的数组a[0][0]表⽰数组a的0号元素(即⼀个int[3]类型数组)中的0号元素。a[1][2]则表⽰数组a的1号元素中的2号元素。

3、除了⼆维数组,我们还可以声明三维、四维,甚⾄更⾼维度的数组,⾄于最多能⽀持多少维数组是由C语⾔实现⾃⼰定义的,不过⼀般⽀持到⼗维数组问题都不⼤。多维数组的构造形式与⼆维数组类似。

 

三、变长数组

1、C99标准引⼊了⼀种叫可变长度的数组(variable length array),这类数组在声明时,其元素个数不是⽤常量表达式来指定的,⽽是通过变量。因此变长数组不能在⽂件作⽤域中声明,不能⽤static存储类说明符来修饰。此外,变长数组以及指向变长数组的指针类型统称为可变修改类型(variably modifiedtype)。当可变修改类型作为sizeof的操作数时,sizeof操作符的结果将在运⾏时计算,并且操作数所产⽣的副作⽤也将会体现出来。随后,变长数组声明之后不能直接对它进⾏初始化,我们只能通过memcpy等库函数或通过直接访问其元素的⽅式对该数组中的指定元素进⾏赋值。

 

四、一级指针与对象地址

1、取址

我们通过单⽬操作符&来取对象a的地址——&a。这⾥的&操作符在C语⾔标准中也称为地址操作符(address operators),它是⼀个单⽬前缀操作符,跟在它后⾯的表达式作为其操作数。

2、当然,现代处理器基本都有⼀套内存管理系统,所以我们在应⽤程序中拿到的都是虚拟地址;⽽在⼀些简单的嵌⼊式系统下,如果没有引⼊虚拟地址特性,那么获取到的对象地址就是物理地址。

 

致谢

1、《C语言编程魔法书》作者 陈轶

2、《C语言程序设计》[第四版],作者谭浩强

3、《C程序设计语言》[第二版],作者 Brian W.Kernighan, Dennis M.Ritchie     

 

 

 

 

展开阅读全文
©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读