ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

C语言数组核心知识点速记

C语言数组核心知识点速记 一、数组是什么核心定义数组同一数据类型、连续内存、批量存储的一组变量通俗理解普通变量 单个盒子数组 一排连续、大小相同、编号有序的盒子数组三大特性必考类型统一数组里所有元素必须是同一种类型int就全intchar就全char内存连续所有元素地址紧紧相连没有空隙下标从0开始第1个元素下标是0不是1二、一维数组最基础、最重要1. 一维数组定义语法数据类型 数组名[数组长度];示例int arr[5]; // 定义能存5个int的数组2. 一维数组初始化四种写法写法1完全初始化填满int arr[5] {1,2,3,4,5};写法2部分初始化剩余自动补0【超级高频考点】int arr[5] {1,2}; // 结果1 2 0 0 0 // 未初始化元素默认 0写法3省略长度初始化编译器自动数个数int arr[] {1,3,5}; // 自动长度 3写法4完全不初始化int arr[5]; // 局部数组随机垃圾值 // 全局数组默认全03. 数组访问、遍历访问语法数组名[下标]下标范围0 ~ 长度-1标准遍历模板以后写代码永远这套for(int i 0; i 5; i) { printf(%d , arr[i]); }4. 一维数组经典易错点数组下标不能越界越界不报错、乱改内存、程序崩溃数组长度C89必须是常量C99支持变量长度数组VLA考试常考区别数组名代表首元素地址是常量地址不能赋值三、数组内存深度理解考试大题考点1. 数组地址连续arr[0]、arr[1]、arr[2]... 地址依次相隔一个元素字节大小int数组每个元素相差4字节char数组每个元素相差1字节2. sizeof 求数组总大小超级重点sizeof(数组名) 整个数组总字节数求数组元素个数公式万能公式int len sizeof(arr) / sizeof(arr[0]);示例int arr[5]; // sizeof(arr) 20 // sizeof(arr[0]) 4 // 长度 5四、字符数组与字符串最大考点、最容易混1. 普通字符数组char ch[3] {a,b,c};没有 \0不是字符串不能用%s打印2. 字符串字符数组自带 \0char str[4] {abc}; // 内存a b c \0双引号初始化自动补 \03. strlen 和 sizeof 绝杀区别必考strlen()有效字符长度不计\0需要头文件 string.hsizeof数组总内存大小包含\0例子char s[] hi; strlen(s) // 2 sizeof(s) // 3 h i \0五、二维数组表格数组1. 定义类型 数组名[行][列]int arr[2][3]; // 2行3列2. 初始化方式完整初始化int a[2][3] { {1,2,3}, {4,5,6} };简写初始化int a[2][3] {1,2,3,4,5,6};部分初始化剩余补0int a[2][3] {1,2};3. 二维数组唯一规则考试死记行可以省略列绝对不能省略int a[][3] {1,2,3,4}; // 合法 // int a[2][] ... 非法4. 二维数组遍历模板for(int i 0; i 2; i) { for(int j 0; j 3; j) { printf(%d , arr[i][j]); } }六、数组与函数超级重难点1. 数组传参本质数组传参不会传整个数组只会传首元素地址所以函数内sizeof(数组) 得不到真实长度永远是4或8字节2. 数组做函数参数两种写法void fun(int arr[]) void fun(int *arr)两种写法完全等价3. 规范写法必须手动传长度void printArr(int arr[], int len) { for(int i 0; i len; i) printf(%d , arr[i]); }七、数组核心考点总结考前必背数组下标从0开始下标越界不报错、运行异常局部数组未初始化随机值全局数组默认0部分初始化未赋值元素自动补0字符串双引号自动补\0字符数组单引号不会strlen不计\0sizeof包含\0二维数组行可省列不可省数组传参退化为指针丢失长度信息必须手动传lenC89数组长度必须常量C99支持变量长度VLA八、新手必会数组经典题型1. 数组遍历、求和、平均值2. 找最大值、最小值3. 数组反转、排序4. 字符数组字符串输入输出、长度计算5. 二维矩阵遍历、对角线求和
返回列表