c语言数组定义(详细)

数组: 什么是数组:变量的组合,是一种定义变量的手段。 定义:类型 数组名[数量]; 数组定义后,默认值同样不确定,因此也需要初始化。 int arr[5] <==> int num1,num2,num3,num4,num5; 使用:数组名[编号] 编号 (下标) 从0开始,范围[0,数量-1] 遍历:配合for循环从头到尾显示,循环变量i就当做数组的下标。 int arr[5]; for(int i=0;i<5;i++) { printf("%d ",arr[i]); } 初始化:int arr[5] = {1,2,3,4,5}; 1、如果初始化数据不足补零。 2、如果初始化数据过多会丢弃,但是会产生警告 3、如果有初始化数据,可以省略数组的长度,因为编译器会统计数组的个数,然后告诉数组 4、只能给元素逐个赋值,不能给数组整体赋值。 sizeof(arr):计算出数组的总字节数 sizeof(arr[0]):计算出数组的第一个元素的字节数 计算数组的长度:sizeof(arr)/sizeof(arr[0]); 二维数组: 一维数组可以看作把变量排成一排,二维数组相当于把变量排成一个方阵。 也可以认为二维数组是由多个长度相等的一维数组构成。 定义:类型 数组名[行数][列数]; int arr[3][5]; [][][][][] [][][][][] [][][][][] 使用:数组[行号][列号]; 行号和列号都是从0开始,范围[0,数量-1]; arr[0][0] arr[0][1] arr[0][2] arr[0][3] arr[0][4] arr[1][0] arr[1][1] arr[1][2] arr[1][3] arr[1][4] arr[2][0] arr[2][1] arr[2][2] arr[2][3] arr[2][4] 遍历:双层for循环,外层循环负责行号,内层循环负责列号 初始化: 1、分段赋值 int arr[3][5]={ {1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25}}; 2、连续赋值 int arr[3][5]={1,2,3,4,5,11,12,13,14,15,21,22,23,24,25}; 3、未赋值的元素自动补零 4、初始化时,行数可以省略,但是列数不可以。 int arr[][5]={ {1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25}}; 变长数组: 什么是变长数组:指的是数组在编译期间长度还不确定,在运行期间可以发生变化,当执行到数组定义语句的时候,数组的长度就确定下来(一旦确定,不能改变) 优点:可以根据程序运行期间的实际需要,灵活设置数组的长度,达到节省内存的目的。 缺点:不能初始化(因为数组的初始化是在编译的帮助下完成,但是变长数组的长度在编译期间还不确定,因此不能初始化)

数组的越界: 在C语言中使用数组时,是不对下标进行检查的(检查会浪费大量的时间,降低效率),数组下标的正确完全靠程序员自觉。 数组越界的后果: 1、一切正常 2、段错误 3、脏数据

经验分享 程序员 微信小程序 职场和发展