360网站提交,跨境电商信息服务平台有哪些,什么是企业网站pv,手机端网站建站手册数组
一维数组
定义一维数组
定义一维数组的一般形式#xff1a; 类型符 数组名 [常量表达式];其中#xff1a;
数组名的命名规则和变量名相同#xff0c;遵循标识符命名规则。常量表达式的值表示数组中元素的个数#xff0c;也称为数组的长度。常量表达式可以包含常量…数组
一维数组
定义一维数组
定义一维数组的一般形式 类型符 数组名 [常量表达式];其中
数组名的命名规则和变量名相同遵循标识符命名规则。常量表达式的值表示数组中元素的个数也称为数组的长度。常量表达式可以包含常量、const 变量和符号常量但不能包含变量。
数组下标
为了存取特定的数组元素可以在写数组名的同时在后边加上一个用方括号围绕的整数值称这是对数组取下标或进行索引。 数组元素的一般形式为 数组名[下标]其中下标只能为整型常量或整型表达式。 数组元素始终从 0 开始所以长度为 n 的数组元素的索引是从 0 到 n-1。 在声明数组并对其中各元素赋值后就可以引用数组中的元素。 数组元素可以像普通变量一样使用。
int a[10]; //整型数组数组名为 a包含 10 个整型元素。
int i 2;
a[0] 1; //数组首个元素赋值值为 1
a[9] i; //数组最后一个元素值为 2
int j a[0]; //数组元素赋予变量 j 一般说来如果数组包含 T 类型的元素那么数组中的每个元素均视为 T 类型的变量。 注意只能引用数组元素而不能一次整体调用整个数组全部元素的值。
int a[10]; //未初始化的数组
/*逐个数组元素赋值*/
for (int i 0; i 10; i)
{a[i] i 1;
}
/*遍历数组*/
for (int i 0; i 10; i)
{printf(%d , a[i]);
}一维数组的初始化
数组的初始化可以用初始化列表以下的方式实现。 数组中各元素的初值顺序放在一对花括号内数据间用逗号分隔。
在定义数组时对全部数组元素赋予初值。 例int a[5] {1,2,3,4,5};可以只对一部分元素赋值剩余未被赋予初值的元素赋予默认值0。 例int a[5] {1,2,3}; //等价于int a[5] {1,2,3,0,0};数组初始化为0。 例int a[5] {0}在对全部数组元素赋初值时可以不指定数组长度系统自动定长。 例int a[] [1,2,3,4,5]; 如果想要的数组长度与提供的初值个数不相同则数组长度不能省略。
指定初始化
C99允许数组指定初始化
int a[10] {[1] 9,[3] 10,[5] 6};//数组元素1为9元素3为10元素5为6其余元素为0。中括号中的数字称为指示符。 指示符必须是整型常量表达式。 如果待初始化的数组长度为 n则每个指示符的值都必须在 0 和 n-1 之间。 如果数组的长度是省略的指示符可以是任意非负整数。 对于有指示符情况编译器将根据最大的指示符推断出数组的长度。
int a[] {[1] 11,[9] 10,[5] 6}; //指示符最大值是9因此数组长度为10初始化式中可以同时使用老方法逐个元素初始化和新方法指定初始化式:
int a[10] {5,3,9,[4] 3,7,2,[8] 6};二维数组
声明二维数组
声明二维数组的一般形式是 类型说明符 数组名[常量表达式 1][常量表达式 2]其中 常量表达式 1 表示第一维下标的长度表示“行”。 常量表达式 2 表示第二维下标的长度表示“列”。 C语言对二维数组采用这样的定义方式使得二维数组可被看作是一种特殊的一维数组它的元素又是一个一维数组。 例声明一个二维数组
int a[3][4];可以把 a 看作是一个一维数组它有3个元素a[0],a[l],a[2] 每个元素又是一个包含4个元素的一维数组 a[0] ------ a[0][0] a[0][1] a[0][2] a[0][3]a[l] ------ a[l][O] a[1][1] a[1][2] a[1][3]a[2] ------ a[2][0] a[2][l] a[2][2] a[2][3]必须强调的是a[0],a[l],a[2]不能当作下标变量使用它们是数组名不是一个单纯的下标变量。 注意用矩阵形式如3行4列形式表示二维数组是逻辑上的概念能形象地表示出行列关系在内存中各元素是按行连续存放的是线性的。
二维数组的下标
二维数组下标的一般形式 数组名[下标][下标]其中下标应为整型常量或整型表达式。 数组元素是左值可以出现在表达式中也可以被赋值。
二维数组的初始化
二维数组可以按行分段赋初值。 例int a[3][4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //按行分段赋初值二维数组可以按行连续赋初值。 例int a[3][4]{1,2,3,4,5,6,7,8,9,10,11,12}; //连续赋初值二维数组可只对部分元素赋初值后面未赋初值的元素自动取 0 值。 例1int a[3][4]{{1},{0,5},{0,11}}; //省略行内元素 例2int a[3][4]{{1},{},{11}}; //省略行全部元素赋初值则第1维的长度行数可以省略但第 2 维的长度列数可以不能省。 例1int a[][4]{1,2,3,4,5,6,7,8,9,10,11,12}; //连续赋初值 例2int a[][4]{{1},{},{11}}; //省略行
C99的指定初始化式对多维数组也有效。
int [2][2] { [0][0] 1,[1][0] 5 };没有指定值的元素都默认置为0。
常量数组
无论一维数组还是多维数组都可以通过在声明的最开始处加上单词 const 而成为常量
const char hex_chars[] {A,B,C,D,E};程序不应该对声明为 const 的数组进行修改编译器能够检测到直接修改某个元素的意图。
变长数组
数组变量的长度必须用常量表达式进行定义但是在C99中有时候也可以使用非常量表达式。
int a[n];变长数组的长度不一定要用变量来指定可以是任意表达式可以含有运算符。
int a[3 * i 5];变长数组variable-length array 简称 VLA 的长度是在程序执行时计算的而不是在程序编译时计算的。 变长数组的主要限制是它们没有静态存储期限另一个限制是变长数组没有初始化式。