C语言指针
C语言指针详解最清晰、最完整的入门到进阶指南指针是 C 语言中最强大、最重要、也最容易出错的核心特性。一句话总结指针就是“地址的变量”它存储的是另一个变量或内存块的内存地址通过指针可以“间接访问”和“操作”那块内存。下面从零基础到高级一步步把指针讲透。1. 指针最基础的概念必须死记inta10;// 普通变量值是 10int*pa;// p 是一个指针变量存的是 a 的地址// 三行最核心的理解printf(%d\n,a);// 输出 10 变量的值printf(%p\n,a);// 输出地址如 0x7ffdf1234568printf(%p\n,p);// 输出地址和 a 相同printf(%d\n,*p);// 输出 10 通过指针“解引用”得到的值最关键的三个符号每天默写 10 遍直到刻进 DNA符号含义读法中文英文说法取地址运算符“取地址”address-of operator*1. 定义指针类型 2. 解引用取值“指针类型” / “解引用”pointer declaration / dereference*p通过指针 p 访问它指向的内存的值“p 指向的值”value pointed by p一句话记忆口诀 是“去哪找”是“找来干什么”*2. 指针变量的定义方式最容易混淆的地方inta10;int*p1a;// 推荐写法* 紧跟变量名int*p2a;// 也可以但容易误导int*p3,q;// p3 是指针q 是普通 int最常出错int*p4,*p5;// p4 和 p5 都是指针正确正确记忆*是跟变量走的不是跟类型走的所以永远写成int *p而不是int* p这样定义多个变量时才不会出错。3. 指针的各种常见类型必须掌握指针类型定义写法指向的内容大小步长典型用途指向基本类型int *psizeof(int) 通常 4操作单个 int 变量指向数组int arr[10]; int *p arr;同上遍历数组最常见指针数组int *arr[10];—每个元素都是指针数组指针int (*p)[10];整个数组大小指向整个数组多维数组常用指向函数的指针int (*func)(int,int);—回调函数、函数表void 指针void *p;无步长不能 通用指针malloc 返回的就是 void*4. 指针的经典用法面试 实战必会4.1 指针遍历数组最常见写法intarr[5]{10,20,30,40,50};int*parr;// 数组名就是首元素地址for(inti0;i5;i){printf(%d ,*(pi));// 方式1指针 偏移// 或printf(%d ,p[i]);// 方式2像数组一样用 []本质相同// 或printf(%d ,*p);// 方式3指针自增最简洁但注意顺序}4.2 交换两个变量不用第三变量voidswap(int*a,int*b){inttemp*a;*a*b;*btemp;}// 调用intx5,y10;swap(x,y);// 必须传地址4.3 动态内存分配malloc / calloc / realloc / free#includestdlib.h// 分配一个 int 大小的内存int*p(int*)malloc(sizeof(int));if(pNULL){/* 分配失败处理 */}*p100;// 分配 10 个 int 的数组int*arr(int*)malloc(10*sizeof(int));// 分配并清零int*arr2(int*)calloc(10,sizeof(int));// 全初始化为 0// 扩容很重要int*new_arr(int*)realloc(arr,20*sizeof(int));if(new_arr)arrnew_arr;// 释放必须成对free(p);free(arr);parrNULL;// 防止野指针现代推荐C99用sizeof(*p)而不是sizeof(int)int*pmalloc(sizeof(*p));// 更安全类型改了也不用改代码5. 指针最容易犯的致命错误面试 生产必考解引用空指针Segmentation faultint*pNULL;*p10;// 崩溃使用后释放Use After Freeint*pmalloc(sizeof(int));free(p);*p20;// 未定义行为重复释放Double Freefree(p);free(p);// 崩溃或内存损坏野指针int*p;// 未初始化*p10;// 随机地址极度危险数组越界intarr[5];*(arr10)999;// 越界写破坏内存防御式编程黄金准则所有指针初始化为 NULLfree 后立刻置 NULL使用前永远判断 !NULL永远用sizeof(*p)而不是硬编码类型6. 面试最常考的指针笔试题背熟这些基本能过指针关指针 1 到底加了多少int*p;// 加 4int 4 字节char*q;// 加 1double*r;// 加 8*p、(*p)、*p、p区别写一个函数返回两个数的最大值和最小值用指针实现字符串复制不调用 strcpy用指针实现二维数组动态分配const 指针 vs 指针 const 的四种写法总结指针的本质一句话指针就是地址的变量通过它可以“隔空操控”内存C 语言把内存管理权完全交给程序员所以指针强大但也最容易出错。现代 C 项目中“指针不离手但别裸奔”—— 能用数组用数组能用结构体用结构体指针主要用来做参数传递、动态内存、遍历和底层操作。想继续深入哪个指针专题A. 指针面试经典 20 题详解B. const 与指针的四种组合const int*、int* const 等C. 指针数组 vs 数组指针完整对比 多维数组写法D. 动态内存分配的完整案例链表、哈希表E. 野指针、悬垂指针、内存泄漏的真实案例分析告诉我字母我们继续深挖

相关新闻

java集合框架

java集合框架

Java 集合框架(Java Collections Framework)完整梳理 Java 集合框架是 Java 开发中最核心、最常用的部分之一,几乎所有的业务代码、算法实现、数据处理都离不开它。 下面从整体架构 → 核心接口 → 常用实现类 → 线程安全方案 → 面试高频考…

2026/7/8 3:25:44 阅读更多 →
C#每日面试题-索引器和迭代器的区别

C#每日面试题-索引器和迭代器的区别

C# 每日面试题:索引器(Indexer)和迭代器(Iterator)的区别 这是 C# 中非常高频的一道面试题,尤其在 .NET 中高级/资深岗位中,几乎每次都会问到,因为它考察了你对 C# 语言特性本质、语…

2026/7/8 15:22:58 阅读更多 →
【Django毕设全套源码+文档】基于Python的香港历史科普网站的设计与实现(丰富项目+远程调试+讲解+定制)

【Django毕设全套源码+文档】基于Python的香港历史科普网站的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/9 7:52:08 阅读更多 →

最新新闻

缺口150万,月薪过万!网络安全成了2026年最抢手的“铁饭碗”

缺口150万,月薪过万!网络安全成了2026年最抢手的“铁饭碗”

缺口150万,月薪过万!网络安全成了2026年最抢手的“铁饭碗” 如果你还以为网络安全就是“修电脑、杀病毒”,那你的认知该更新了。现在的真实行情是:全国网络安全人才缺口已突破150万,企业拿着高薪都招不到人。有3年经验…

2026/7/9 16:56:56 阅读更多 →
AI训练数据版权争议:苹果被诉非法抓取YouTube视频

AI训练数据版权争议:苹果被诉非法抓取YouTube视频

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来关注一个涉及AI训练数据来源的重要法律争议。苹果公司被三家YouTube频道起诉,指控其非法抓取数百万段受版权保护…

2026/7/9 16:54:55 阅读更多 →
三张财务报表怎么看?利润、资产、现金流要串起来理解

三张财务报表怎么看?利润、资产、现金流要串起来理解

做经营分析这些年,我发现一个很普遍的问题。 很多企业的财务报表做得越来越细; 管理报表越来越厚; 但真正能回答经营问题的分析却越来越少。 老板看利润表,发现利润增长了,觉得经营不错; 财务看资产负…

2026/7/9 16:52:55 阅读更多 →
C++队列数据结构实现:从数组循环队列到链表动态队列的底层原理与实战

C++队列数据结构实现:从数组循环队列到链表动态队列的底层原理与实战

1. 项目概述:为什么需要自己动手实现队列?在C的世界里,提到队列,很多人的第一反应就是STL里的std::queue。它封装得很好,拿来就用,确实方便。但作为一个有追求的C开发者,尤其是在面试、学习底层…

2026/7/9 16:50:54 阅读更多 →
学生综合成绩测评系统-springboot + vue

学生综合成绩测评系统-springboot + vue

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于springboot vue的学生综合成绩测评系统 前台登录网址: http://localhost:808…

2026/7/9 16:50:54 阅读更多 →
Cursor企业级工程化配置与AI编码范式实战

Cursor企业级工程化配置与AI编码范式实战

1. 这不是又一个“AI编程工具”教程,而是企业级代码生产力的实操切片你点开这个标题,大概率正被三件事压着:需求排期像雪崩、CRUD写到手抽筋、新项目启动时连环境都搭不齐。我带过七支不同行业的技术团队,从金融风控系统到智能硬件…

2026/7/9 16:48:53 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻