鹏哥c语言复习第十一讲----指针1基础概念
本文覆盖内存与地址、指针变量、指针类型意义、指针运算全是面试 考试必考点一、内存和地址指针本质内存被划分为一个个字节单元每个单元有唯一编号这个编号就是地址 指针。32 位机器地址 32 位占4 字节64 位机器地址 64 位占8 字节。变量在内存中占多字节变量取出的是首字节地址最小地址。二、指针变量和地址1. 取地址 a取出变量 a 的内存首地址。2. 指针变量专门存放地址的变量。写法类型* 指针名c运行int a 10; int* pa a; // pa是指针变量存a的地址3. 解引用 **pa通过地址找到指向的变量等价于原变量。c运行*pa 0; // 等价于 a 0;4. 指针大小32 位平台所有指针都是 4 字节64 位平台所有指针都是 8 字节指针大小和类型无关只和平台有关三、指针变量类型的意义重点指针类型决定两件事解引用权限一次操作几个字节int*解引用访问4 字节char*解引用访问1 字节指针 ±1 走多远int* 1跳4 字节char* 1跳1 字节void* 泛型指针可以接收任意类型地址无警告。不能直接 ± 整数、不能直接解引用。常用于函数参数做泛型设计。四、指针运算3 种1. 指针 ± 整数数组遍历核心pi指向数组第 i 个元素。c运行int arr[10]; int* p arr; *(pi) arr[i]2. 指针 - 指针前提指向同一块连续空间如同一个数组。结果两指针间的元素个数。经典应用模拟 strlen。3. 指针关系运算比较地址大小 !常用于数组遍历结束判断。 新手必踩 8 大坑直接背定义指针时把int* pa写成int *pa虽然语法对但风格不规范。指针不初始化就使用野指针直接崩溃。混淆取地址和*解引用。误以为int*、char*大小不一样同平台大小一样。void*直接解引用 /± 整数编译报错。指针 - 指针时指向不同内存区域结果无意义。把数组名当成普通变量不知道数组名就是首元素地址。解引用空指针、越界指针程序直接崩。一句话记住指针指针就是地址指针变量存地址类型决定步长与权限运算用来遍历数组。//别看都是基础概念这些基础概念都是为中期更好的理解如果基础打不牢后面视频看了也是白看第一遍肯定是不懂的多次看就很浪费时间所以我们一开始就要明辨概念。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2504877.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!