C语言笔记6:变量生命周期、指针与数组指针全解析
#本篇博客基于C语言学习这两天核心笔记整理聚焦变量生命周期与存储类型、指针基础与用法、数组与指针深度结合三大模块从基础概念到代码实战帮你彻底吃透C语言核心难点。一、变量生命周期与存储类型1. 核心概念生命周期变量从内存分配到内存释放的整个时间段。存储区域静态存储区全局变量、static变量程序启动分配、退出释放。栈区动态存储局部变量、函数形参函数调用时分配、结束释放。堆区手动申请/释放内存malloc/free。2. 四大存储类型auto自动修饰局部变量默认存储类型可省略。存于栈区函数/代码块结束立即释放。static静态修饰局部变量生命周期延长至程序结束仅初始化1次作用域不变。修饰全局变量/函数限制作用域为当前文件实现私有化。extern外部扩展全局变量/函数作用域跨文件访问需多文件联合编译。register寄存器修饰局部变量提示存入CPU寄存器提升速度不能用取地址。3. 面试高频static关键字作用局部变量延长生命周期作用域不变。全局变量限制作用域为当前文件生命周期不变。函数变为内部函数仅当前文件可调用。二、指针基础核心1. 指针本质指针 内存地址通过地址间接访问内存空间。变量指针变量的基地址a不可修改。指针变量存储地址的变量int *p可修改指向。2. 指针关键操作取地址符获取变量基地址。*解引用符访问指针指向的内存值。地址输出格式%p十六进制。3. 指针尺寸32位系统指针占4字节。64位系统指针占8字节与类型无关。4. 指针两大交换方式交换指针指向不修改原变量值仅改变指针指向。交换指向变量值修改原变量数据指针指向不变函数传参修改实参常用。5. 指针做函数参数传递变量地址可直接修改实参输出型参数解决普通传参无法修改的问题。三、数组与指针深度结合1. 数组名本质数组名等价于首元素地址arr arr[0]是指针常量不可修改。2. 指针运算指针±n偏移n × 类型大小字节。指针自增/自减每次偏移1个类型单位。指针差值结果为相差元素个数。3. 数组四种遍历方式下标法arr[i]最直观。数组名偏移*(arri)。指针变量自增int *parr; p; *p。指针范围判断p arrlen。4. 数组指针指向整个数组的指针定义数据类型 (*p)[数组容量] 数组名。一维数组指针int (*p)[3] arr(*p)[i]等价arr[i]。二维数组指针int (*p)[3] arr用于遍历二维数组行地址。5. 指针与数组互转形参数组int arr[]等价于int *arr数组退化为指针。实参可传数组名/指针形参可写数组/指针完全兼容。四、核心实战与面试考点指针实现数组逆序首尾指针相遇交换禁止下标法。指针遍历字符串以\0为结束标志。二维数组指针操作转置、统计上三角元素、找最大值地址。动态内存malloc申请、free释放结合指针实现数组增删改查。声明辨析指针、数组、指针数组、数组指针、函数指针区分。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2505853.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!