博客专栏

EEPW首页 > 博客 > Linux C - C基础篇六(数组)

Linux C - C基础篇六(数组)

发布人:嵌入式Linux 时间:2023-01-12 来源:工程师 发布文章

数组是一个单一数据类型对象的集合,其中单个对象并没有被命名,但是我们可以通过它所在数组中的位置对它进行访问,这种访问形式被称作索引访问或下标访问。

一维数组

如下,声明了一个包含10个int对象的数组(整形数组),每个对象被称作是数组ia的一个元素,元素下标是0-9而不是1-10,共10个元素,因为没有初始化,所以每个元素默认都是0。只定义数组但是不初始化时,必须在[]中指定数组的大小。

int ia[10];

将ia的第1个元素赋值给val:

int val = ia[0];

将常量100赋值给ia的最后一个元素:

ia[9] = 100;

数组可以被显式地用一组数来初始化,这组数用逗号分开并放在大括号中,如下声明了一个包含10个字符对象的数组(字符数组),并显式的初始化了每个元素,显式初始化数组时可以不指定数组的大小,系统会根据初始化元素的数量来分配数组的大小:

char ca1[] = {'h', 'e', 'l', 'l', 'o'};

字符数组还可以如下初始化:

char ca2[] = "hello";

注意:以上两种定义初始化方法是有区别的,数组ca1的大小是5;数组ca2的大小是6,在元素'o'后面会默认添加'\0',这是个字符串结束符。

要把一个数组拷贝到另一个中去 必须按顺序拷贝每个元素,例如:

int index;

int array_size = 7;

int ia1[] = { 0, 1, 2, 3, 4, 5, 6 };

int main()

{

int ia2[ array_size ];

for (index= 0; index< array_size; ++index)

ia2[ index] = ia1[ index];

return 0;

}

二维数组

我们也可以定义二维数组,每一维用一个方括号对来指定,第一维称为行,第二维称为列,例如下面定义了一个4行3列的二维数组:

int ia[ 4 ] [ 3 ];

可以进行如下初始化:

int ia[ 4 ][ 3 ] = {

{1, 2, 3},

{11, 12, 13},

{21, 22, 23},

{31, 32, 33},

}

用来表示行的花括号即被内嵌在里边的花括号是可选的,下面的初始化与前面的是等价的,只是有点不清楚:

int ia[4][3] = {1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33};

访问第1行第1个的元素:

int val = ia[0][0];

给第4行的最后一个元素赋值:

ia[3][2] = val;

下面的定义只初始化了每行的第一个元素,其余的元素被初始化为0,即ia[0][0] = 0,ia[1][0] = 3,ia[2][0] = 6,ia[3][0] = 9:

int ia[ 4 ][ 3 ] = { {0}, {3}, {6}, {9} };

如果省略了花括号,结果会完全不同,下面的定义:

int ia[ 4 ][ 3 ] = { 0, 3, 6, 9 };

初始化了第一行的3个元素和第二行的第一个元素,其余元素都被初始化为0。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

传感器相关文章:传感器工作原理


漏电开关相关文章:漏电开关原理
漏电保护开关相关文章:漏电保护开关原理
热式质量流量计相关文章:热式质量流量计原理
流量计相关文章:流量计原理


关键词: 数组

技术专区

关闭