指针模块总结
1.指针的认识和应用int val 0 char* a val; char* *b a; //指针就是取地址分指针等级 char* pa,pb; //pa是char* pb是char char* pa,*pb; //pa pb都是char* typedef; 是对变量进行重命名 // typedef char* PChar PChar pa,pb char* pa,*pb 变量名升级为类型名 #define 是同义替换//#define PCHAR char* PCHAR pa,pb char* pa,pb * --解引用(回到上一级变量) *(p1) arr[1] *(arr1)指针大小只与平台有关 x86 (win32) --4B x64(win64) --8B指针解析能力与指针类型有关2.简单定义与const结合指针指向变量变量值不能被修改const int val 0;//const所修饰的有常量不可改变 变量类型对const可忽略从右到左可以进行范围的缩小(权限缩小) const int * p a; //*p具有常性,p的指向可以改变 const可以修饰不需要改变字符串或数组 例如show函数、strcmp比较字符串不需要改变该数组用const修饰3.指针运算3.1指针 -n 的能力//指针 n 的能力 int* p; p1 -- 偏移量 1*sizeof(*p) 4B long long **q; q1 -- 偏移量 1*sizeof(*q) 4B (因为*q的类型为指针所以为4字节) *(p1) arr[1] *(arr1) 指向i*sizeof(*p)位置 所指类型不变3.2指针与--int arr[] {1,2,3,4,5,6,7,8,9,10}; int *p arr2; 开始时指向arr[2] -- 3 以下均为指针自增自减 *p -- 3 先解引用表达式的值为3 后P的指针指向加一指向arr[3] *p -- 5 p先自增后解引用 -- 5 (*p) -- 6 -- 自增操作P指向的值不变将arr[4]的值自增1 (*p) -- arr[4] arr[4]1 先解引用在自增 *--p -- arr[3]:4 --*p -- arr[3] arr[3] - 1 -- 3 偏移量解引用 char *arr[] {abc,def,ghi}; char **p arr; p;//此时p指向arr[1]; printf(%s,*p1); *p1 -- 先对P解引用 -- arr[1]再指针向后偏移一个字符位置(char)类型 *p → *(p) 取值指针后移 (*p) → 先取值值自增指针不动 *p → *(p) 指针先移再取值 *p → (*p) 取值然后值自增指针不动4.指针与数组4.1数组指针 --定义一个指针指向数组数组指针 char str[] hello\0;//6个 两种定义方式 char (*p)[6] (char(*)[6])str;//类型强转 char (*p)[6] str; p1的偏移量 1*sizeof(*p) // char[6] --直接偏移一个行数 //访问\0 str[strlen(str)]; (char*)(p1)[-1];(往前挪一个小字节类型强转)4.2指针数组 --是一个数组每个元素都是指针指针数组 const char* names[] {zs,lisi}; sizeof(names): 2*4 B char arr[] hello; //[hello] const char* str hello; //数据区常量 char brr[] hello; //[hello] const char* sub hello; //数据区常量 str sub 地址和值都相等从同一份数据区拿出来的 在常量区中相同字符串只有一份 arr 与 brr 是数组定义定义一个数组分别在main中开辟一块内存 存储abc 修改字符 -- char arr[] abc;sizeof(names): 2*4 B 其中 4 是指--指针的大小固定为4 字节5.指针与函数5.1返回值为指针不能返回局部变量地址,应该延长局部变量生存周期 static 到main函数结束储存在数据区 静态局部变量: 只被定义1次 局部变量作用完立即销毁空间 int main() { int val; //0x123 int* q fun(val); return 0; } 此时返回的是q的值保存的是val的地址在main中可以找到该地址并且可以解引用5.2形参是指针1.形参的修改要影响实参必须传地址通过解引用修改值 2.指针大小只与平台有关(固定值)可以节省空间 --不需要重新开辟新的空间 void Show(const int* arr,int len) void mystrcpy(char* sub,const char* str)5.3函数指针 --是一个指针指向一个函数int add(int a,int b){ } int mul(int a,int b){ } 函数返回值类型 (*p)(形参列表) 函数地址; 函数名: 函数入口地址 int (*p)(int,int) add; p mul; //add(1,2); p(1,2); eg: long* fun1(){ } 定义指针 指向fun1并完成函数调用 long * (*p1)() fun1; p1(); 调用 fun1函数 typedef long*(*PFun)(); PFun p1 fun1; p1();6.1void* -- 无类型指针void * p val; 无类型指针 不能1 不能解引用 崩 int * p (int*)malloc(100);6.2野指针和空指针不能解引用空指针--崩 int* p; //野指针 *p 1; --崩 所指地址不明确随机地址 地址对应值没有访问权限 int* p NULL; //0号地址空间不具有访问权限 #define NULL 0 int* p 200000; //错误 类型错误 200000 -- int int* p (int*)200000; //不建议 不安全7.mem系列函数 --头文件string.hmemcpy不用考虑内存重叠从前往后memmove考虑内存重叠先用指针比较大小从后往前memset(地址,值,字节数); 内存初始化用于快速清空数组 将一块内存区域的前 n 个字节设置为指定的值 void mymemcpy(void* arr,const void* brr,unsigned int size) { char* Arr (char*) arr; const char* Brr (const char*) brr; while (size--) { *Arr *Brr; } } void mymemmove(void* arr, const void* brr, unsigned int size) { char* Arr (char*)arr; const char* Brr (const char*)brr; if (Arr size Brr) { while (size--) { Arr Arr size -1; Brr Brr size -1; *Arr-- *Brr--; } } else mymemcpy(arr,brr,size); }8.面试题1.大小端/大小字节序 --- 数据在内存中的存储模式 小端 : 低地址存储低位数据(滴滴) int val 0x12345678; _0x78__ _0x56__ __0x34__ _0x12__ 低地址 高地址 char* p (char*)val; 类型强转只解析一个字节 if( *p 0x78) 小 else 大 大端: 与小端相反2. 数组指针 和 指针数组 1) 数组指针 -- 指针 指针1(偏移量能力) 2) 指针 数组 --- 数组 每个元素是指针 3) int arr[2]; int(*p)[2]arr; 数组指针 const char* p[] {zs,lisi}; 指针数组

相关新闻

C++命名空间完全指南:从符号冲突原理到工程级排查方案

C++命名空间完全指南:从符号冲突原理到工程级排查方案

我印象很深的一个 Bug:项目里一个工具函数 find_max,代码逻辑没有任何问题,但编译时却撞上了另一个第三方库里的 find_max,编译器直接甩出一屏 ambiguous、multiple definition 的报错。这类 C 代码冲突问题,在老项目中…

2026/10/12 1:35:51 阅读更多 →
C++命名空间实战:彻底解决代码冲突与符号重复定义

C++命名空间实战:彻底解决代码冲突与符号重复定义

写代码这些年,几乎每个C开发者都撞过同一堵墙:辛辛苦苦把别人的库集成进来,一编译,满屏的“重复定义”“歧义调用”,甚至更阴险的是自己写的同名函数悄悄被别的模块顶替了,程序运行起来行为诡异却找不到任何…

2026/10/12 1:35:51 阅读更多 →
AnyPS5:从动态二进制翻译到Vulkan渲染的模拟器开发实战

AnyPS5:从动态二进制翻译到Vulkan渲染的模拟器开发实战

一台PS5到手之后,大部分人的第一反应是插上电视开始玩。我的第一反应是拆开它,然后认真问自己一个问题:这套硬件和系统,到底能不能被抽象成一层“通用接口”,让它在别的机器上也能跑起来?这个念头后来发展成…

2026/10/12 1:35:51 阅读更多 →

最新新闻

【大数据毕设项目】基于K-Means的低能见度事件预测模型与可视化分析系统\基于数据挖掘的站间同步低能现象分析与可视化研究

【大数据毕设项目】基于K-Means的低能见度事件预测模型与可视化分析系统\基于数据挖掘的站间同步低能现象分析与可视化研究

文章目录 一、项目开发背景意义 二、项目开发技术 三、项目开发内容 四、项目展示 五、项目相关代码 六、最后 一、项目开发背景意义 随着气象监测技术的快速发展,气象领域积累了海量的多源观测数据。低能见度事件对航海、航空以及陆地交通的安全运行构成严重…

2026/10/12 2:25:23 阅读更多 →
【C++ 入门】从 C 过渡到 C++:基础语法与核心特性入门

【C++ 入门】从 C 过渡到 C++:基础语法与核心特性入门

目录 1.C的第一个程序 2.命名空间namespace 一、为什么有namespace ​二、namespace的特性 特性1:命名空间可以拆分,追加定义 特性2:命名空间可以嵌套 特性3:匿名命名空间(无名字namespace) 特性4&…

2026/10/12 2:25:23 阅读更多 →
题解:洛谷 P10112 [GESP202312 八级] 奖品分配

题解:洛谷 P10112 [GESP202312 八级] 奖品分配

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

2026/10/12 2:25:23 阅读更多 →
如何把 Windows 11 任务栏移到左侧(官方快捷方法)

如何把 Windows 11 任务栏移到左侧(官方快捷方法)

Windows 11 面世已久,早已融入百万用户的日常,帮他们打理各种计算需求;只不过它重新设计的任务栏图标把开始菜单摆到了正中间,打破了 Windows 延续 25 年的传统。如果你想把任务栏挪回左侧、放回它该在的地方,好消息是:微软内置了一个官方设置,改起来大约 15 秒。 不过…

2026/10/12 2:25:22 阅读更多 →
题解:洛谷 P1118 [USACO06FEB] Backward Digit Sums G/S

题解:洛谷 P1118 [USACO06FEB] Backward Digit Sums G/S

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

2026/10/12 2:25:22 阅读更多 →
【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

1. 引言 近期,Meta Muse 智能体在 AI 领域引发广泛关注,开发者、创作者与科技从业者纷纷展开讨论。许多初次接触者不禁疑惑:这是 Meta 推出的又一款大模型?抑或仅是蹭热度的 AI 玩具? 事实并非如此。Meta Muse 是 Meta 在 AI 智能体方向的一次战略性布局,它并非简单的对…

2026/10/12 2:24:22 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →