C 语言从 0 入门(十二)|指针与数组:数组名本质、指针遍历数组
大家好我是网域小星球。上一篇我们学习了指针基础理解了指针就是地址、取地址、*解引用。而在 C 语言里数组和指针关系极其紧密甚至可以说数组在底层就是用指针实现的。掌握指针操作数组不仅能让代码更简洁高效更是理解字符串、函数传参、数据结构的关键。本篇从本质到实战层层拆解全程 VS2022 可直接运行零基础也能轻松掌握。目录一、本章学习目标二、数组名的本质三、核心等价公式必背四、指针遍历数组最常用写法示例 1基础遍历五、指针操作数组元素1. 修改元素六、指针与字符串重点七、易混概念简单区分1. 指针数组2. 数组指针八、高频易错点九、本章核心总结下期预告一、本章学习目标学完本篇你将彻底掌握数组名的本质数组名是数组首元素的地址指针与数组通用访问规则a[i] *(ai)用指针遍历一维数组指针操作数组元素修改、查找、赋值指针数组与数组指针的简单区分高频易错点与规范写法二、数组名的本质一句话数组名 数组首元素的地址例如int arr[5] {10, 20, 30, 40, 50};arr等价于arr[0]数组名是一个常量地址不能修改不能 arr这是指针与数组一切关系的基础。三、核心等价公式必背arr[i] *(arr i)含义数组下标访问arr[i]本质就是指针偏移 解引用所以下面两种写法完全等价printf(%d, arr[2]); printf(%d, *(arr 2));都表示第 3 个元素下标 2。四、指针遍历数组最常用写法示例 1基础遍历#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h int main() { int arr[5] {1,2,3,4,5}; int *p arr; // p 指向数组首地址 for (int i 0; i 5; i) { printf(%d , *(p i)); } return 0; }示例 2指针移动遍历int main() { int arr[5] {1,2,3,4,5}; int *p arr; for (int i 0; i 5; i) { printf(%d , *p); p; // 指针向后移动一个 int } return 0; }输出1 2 3 4 5五、指针操作数组元素1. 修改元素int arr[5] {1,2,3,4,5}; int *p arr; *(p 2) 300; // 等价于 arr[2] 300;2. 查找最大值int main() { int arr[5] {11,33,22,55,44}; int *p arr; int max *p; for (int i 1; i 5; i) { if (*(pi) max) max *(pi); } printf(max %d\n, max); return 0; }六、指针与字符串重点字符串本质是char数组所以指针操作字符串非常常用。int main() { char str[] hello; char *p str; while (*p ! \0) { printf(%c, *p); p; } return 0; }输出hello七、易混概念简单区分1. 指针数组存放指针的数组int *arr[5];2. 数组指针指向数组的指针int (*p)[5];入门阶段只需记住数组名就是首地址用指针可以遍历数组即可。八、高频易错点数组名是常量地址不能写arr指针越界偏移超过数组长度导致崩溃混淆*p、(*p)、*(p)字符串指针忘记\0导致乱码把数组地址直接赋值给错误类型指针九、本章核心总结数组名本质首元素地址即arr arr[0]下标与指针等价arr[i] *(arri)指针可以遍历、修改、查找数组元素字符串用指针遍历更简洁数组名不可修改指针可以移动指针 数组是 C 语言高效访问内存的核心方式下期预告下一篇我们学习结构体学会自己定义 “复合型变量”比如学生、员工、书籍等实现更贴近现实的数据管理也是做小项目必备知识。