数组一直是编程语言学习中需要重点掌握的部分,它是最基本的数据结构类型,是构成字符串及其他许多重要构造结构的基础。相对许多其他高级语言来说,C语言对数组本身提供的支持并不太多,尤其是不支持动态的数组定义。
本文总结了几种常见的数组使用中的错误用法,并通过分析原理解释错误原因,从而为掌握正确的数组用法提供帮助。同时提供了几个相对有代表性的数组的使用方式及源码,以方便学习。
指引
- 数组定义方法及使用示例
- 常见数组定义错误
- 数组原理及坑
- 矩阵乘积计算
- 杨辉三角
- 数组宏
数组定义方法
在C语言中,数组按如下的方法定义:
① 类型 数组名[数组大小];
int array[10];
char str[15];
② 类型 数组名[]={元素1,元素2,元素3,...};1
int a={
1,2,3,4,5};
char ch[]={
'a','b','c'};
③ 类型 数组名[数组大小]={元素1,元素2,元素3,...};2
float x[4]={
1.5, 3.2, 6.0, 23};
int y[5]={
1,2,3,4};
数组使用方法示例
/*
在下述代码代码片段中展示了几种常见的错误
*/
#define N 5
int main(){
/*错误形式 01: 声明数组时没有确定长度 */
int array1[];
/*错误形式 02:数组长度必须在进行编译初期就能确定,
而不能是在运算处理中才能计算出来的结果,如宏定义 */
int m=5;
int array[m];
/*错误形式 03: 先声明了数组,再赋值*/
int array2[N];
array2={
1,2,3,4,5};
/*错误形式 04: 赋值范围超出了开辟的空间*/
int array3[N]={
1,2,3,4,5,6};
/*错误形式 05: 试图进行对数组的整体赋值*/
int a[N]={
1,2,3,4,5},b[N];
b=a;
return 0;
}
数组原理及“坑”
1. 数组在定义的时候,在内存空间中为其开辟了一块连续的空间,其大小为单个数组元素类型所占大小 sizeof(type) 与元素个数N的积,即:
size = sizeof(type) * N
2. 同一数组内的数据元素必须一样,即即便如下述定义:
float x[]={