当前位置: 首页 > news >正文

鹏哥c语言复习第十一讲----指针1基础概念

本文覆盖:内存与地址、指针变量、指针类型意义、指针运算,全是面试 + 考试必考点


一、内存和地址(指针本质)

  1. 内存被划分为一个个字节单元,每个单元有唯一编号,这个编号就是地址 = 指针
  2. 32 位机器:地址 32 位,占4 字节;64 位机器:地址 64 位,占8 字节
  3. 变量在内存中占多字节,&变量取出的是首字节地址(最小地址)。

二、指针变量和地址

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 字节
  • 指针大小和类型无关,只和平台有关!

三、指针变量类型的意义(重点!)

指针类型决定两件事:

  1. 解引用权限(一次操作几个字节)
    • int*解引用:访问4 字节
    • char*解引用:访问1 字节
  2. 指针 ±1 走多远
    • int* +1:跳4 字节
    • char* +1:跳1 字节

void* 泛型指针

  • 可以接收任意类型地址,无警告。
  • 不能直接 ± 整数、不能直接解引用
  • 常用于函数参数,做泛型设计。

四、指针运算(3 种)

1. 指针 ± 整数

  • 数组遍历核心:p+i指向数组第 i 个元素。

c

运行

int arr[10]; int* p = arr; *(p+i) == arr[i]

2. 指针 - 指针

  • 前提:指向同一块连续空间(如同一个数组)。
  • 结果:两指针间的元素个数
  • 经典应用:模拟 strlen

3. 指针关系运算

  • 比较地址大小:< > <= >= == !=
  • 常用于数组遍历结束判断。

🚫 新手必踩 8 大坑(直接背)

  1. 定义指针时把int* pa写成int *pa虽然语法对,但风格不规范
  2. 指针不初始化就使用(野指针),直接崩溃。
  3. 混淆&(取地址)和*(解引用)。
  4. 误以为int*char*大小不一样(同平台大小一样)。
  5. void*直接解引用 /± 整数,编译报错。
  6. 指针 - 指针时,指向不同内存区域,结果无意义。
  7. 把数组名当成普通变量,不知道数组名就是首元素地址
  8. 解引用空指针、越界指针,程序直接崩。

一句话记住指针

指针就是地址,指针变量存地址;类型决定步长与权限,运算用来遍历数组。

//别看都是基础概念,这些基础概念都是为中期更好的理解,如果基础打不牢,后面视频看了也是白看,第一遍肯定是不懂的,多次看就很浪费时间,所以我们一开始就要明辨概念。

http://www.jsqmd.com/news/621376/

相关文章:

  • 查重不用愁!PaperXie 四大检测模块,一站式解决论文重复率 + AIGC 率难题
  • 用confyUI搭建AI动漫工作流 |【小白篇】|【解释】
  • GME-Qwen2-VL-2B-Instruct保姆级教程:Linux服务器后台常驻服务部署方案
  • 2026年名酒回收全解析:选服务商必看的7个核心维度 - 优质品牌商家
  • Shiftbrite LED驱动原理与STM32嵌入式实现
  • LangChain进阶(一)Tools外部能力接入
  • ICC2与Innovus实战:手把手教你搞定Reg2ICG的Setup违例(附PT验证技巧)
  • OpenClaw v2026.4.9 初始化安装推荐“技能包”(Skills)
  • 为什么SITS2026要求“AI能力必须嵌入主干流程”?——基于17家头部企业POC数据的因果链分析(含RPA+LLM耦合失效预警模型)
  • CXL协议中的寄存器访问机制:配置空间与内存映射空间详解
  • 2026年怎么选电伴热施工安装厂家:廊坊自调控电伴热带、廊坊自限温电伴热带、廊坊防爆型电伴热带、廊坊发热电缆、廊坊合金丝发热电缆选择指南 - 优质品牌商家
  • golang如何消除边界检查提升性能_golang边界检查消除性能提升思路
  • Hyperf方案 飞书机器人消息推送 - 实现向指定飞书群组或用户发送文本/富文本/图片消息(基本版本)
  • 11.从Demo到工程:RAG/Agent系统的日志、配置与异常处理
  • 别再死记硬背!用Multisim仿真带你直观理解TTL反相器的工作原理
  • Mbed平台任意引脚软件PWM库实现与应用
  • SSD1289 TFT-LCD驱动开发:Cariad车载平台实战指南
  • DeepSeek与LangGraph共享单车需求数据预测:LSTM与XGBoost多模型融合方法及Streamlit可视化应用 | 附代码数据
  • OpenAI团队编程Agent的Harness工程实践
  • 2026年靠谱的光化反应釜/LED 光催化反应釜厂家综合对比分析 - 品牌宣传支持者
  • hybrid实验
  • TLCBuffer:嵌入式时序数据的时间长度压缩缓冲区
  • 2026代理记账收费标准top3名录:深圳注册公司后税务登记及记账报税/深圳注册公司常见原因及技巧/选择指南 - 优质品牌商家
  • LangChain模块(六)Agent智能体
  • Google 迎来「DeepSeek 时刻」:TurboQuant算法实现bit无损、×加速、×压缩、零预处理督
  • FlashStringTable:嵌入式Arduino的PROGMEM字符串高效管理方案
  • 新能源车全生命周期测试标准体系:从NVH性能到环境适应性及关键部件验证
  • LangChain进阶(三)CAMELBabyAGI
  • 2026年收费合理的昆山劳动律师热选事务所推荐 - 品牌宣传支持者
  • 2026奇点智能技术大会闭门报告(仅限首批287家签约企业的API架构白皮书节选)