C语言一维数组详解

C语言一维数组详解 一、一维数组概念数组是一组相同类型、内存连续有序的数据集合。一维数组就是单排连续存储的同类型数据。三大特性单一性所有元素数据类型完全一致连续性内存地址连续紧挨有序性依靠下标区分每一个元素。二、一维数组定义语法数据类型 数组名[元素个数];定义规则数据类型int、char、float、double 等数组名命名规则同变量字母、数字、下划线不能数字开头不能是关键字[元素个数]必须是常量不能使用变量表示数组最多存放元素数量。示例intarr[5];// 存放5个int整数charbuf[20];// 存放20个字符floatscore[10];// 存放10个小数三、数组下标访问数组不能整体操作只能通过下标访问单个元素。格式数组名[下标]下标范围0 ~ 元素个数-1例int a[5]合法下标0、1、2、3、4下标可以是常量、变量、表达式禁止下标越界C语言不做越界检查会导致乱码、程序崩溃。使用示例inta[5];a[0]10;a[1]20;printf(%d,a[0]);四、数组内存长度计算利用sizeof计算数组总字节、单个元素字节自动求数组长度inta[5];inttotalsizeof(a);// 数组整体占用字节intsinglesizeof(a[0]);// 单个元素字节intlensizeof(a)/sizeof(a[0]);// 数组元素总个数五、一维数组初始化初始化是定义数组时直接赋值未手动赋值的元素自动填充0。1. 全部初始化inta[5]{1,2,3,4,5};2. 部分初始化inta[5]{1,2,3};// a[0]1 a[1]2 a[2]3 a[3]0 a[4]0数组快速清零写法int a[5] {0};3. 省略长度初始化编译器根据大括号内数值自动确定数组长度inta[]{10,20,30};// 数组长度为34. 字符数组字符串专用一维数组C语言无单独字符串类型字符串是以\0结尾的char一维数组// 完整写法charstr[6]{h,e,l,l,o,\0};// 简写charstr[6]hello;\0ASCII值为0是字符串结束标记。六、数组遍历输入输出配合for循环下标批量读写数组元素整型数组示例#includestdio.hintmain(void){inta[5]{0};intlensizeof(a)/sizeof(a[0]);inti;// 输入for(i0;ilen;i){scanf(%d,a[i]);}// 输出for(i0;ilen;i){printf(a[%d] %d\n,i,a[i]);}return0;}字符字符串数组输入输出#includestdio.hintmain(void){charstr[32]{0};scanf(%s,str);printf(%s\n,str);puts(str);return0;}七、字符串操作库函数头文件string.h仅适用于char一维字符串数组strlen(数组名)统计有效字符长度不含\0strcpy(目标数组, 源字符串)字符串拷贝strcat(数组1, 数组2)字符串拼接strcmp(s1,s2)字符串比较返回0两串相等返回正数s1 s2返回负数s1 s2八、一维数组常见易错点下标从0开始极易出现越界访问定义数组容量只能写常量不能用变量不能直接数组整体赋值必须循环逐个拷贝存储字符串必须预留\0空间否则打印乱码scanf(%s)遇到空格自动截断无法读取带空格字符串sizeof求数组总内存strlen只统计字符串有效字符不要混淆局部数组不初始化时元素是随机垃圾值建议统一{0}初始化。