C语言基础笔记 04 指针

00 包

目前CLion的最新版本还不支持中文,需要导入#include <stdlib.h> ,再在main函数内写system("chcp 65001");才能在代码中用中文

stdlib 还可以提供动态内存分布——malloc函数

01 使用原因

对于函数,在函数外定义的变量,函数内进行的运算不会影响函数外变量大小;定义 int b=n; b 改变时,n不会改变

为了让改变同时发生,我们需要指针

02 定义,格式

指针: 也是一种定义变量的方式,指针变量被用来存储另一个变量的地址,通过地址来操作数据

格式: 你要存储的变量地址的类型 *指针变量名;//=&取地址变量名//

int m =10; 定义了一个整数型指针 它可以存储一个整数型变量的内存地址:int *pm = &m;

03 语法

01 改变值

指针操作: 如何通过指针变量操作它存储的地址中的数据 *指针变量 = 值;

!!! *a++; 错误 *a=*a+1; 正确 !!!
!!! 定义指针变量 int *pm=&m; 函数:void add(int *a){ *a=*a+1;} int n=0; add(&n); !!!

02 不同的输出结果

输出变量名==输出*指针变量名==变量值
输出&变量名==输出指针变量名==指针变量数据存储的地址编码==变量内存地址

04 与数组结合

01 相关知识

**计算机操作的基本单位是byte**数组的储存地址是连续的,间隔由变量单位大小决定,如int间隔4,char间隔1

输出 *数组变量名==数组第0号变量值 输出 *(数组变量名+i)==数组第i号变量值
输出 数组变量名==输出 &数组变量名== 输出&数组变量名[0]==数组第一个变量的储存地址

数组变量名 也相当于一个指针,因此通用一些操作

C语言的函数 不支持直接返回数组 int[] test(){}不合法
解决方法: 可以使用指针来存储数组的地址 进行返回(!!返回值为指针时写 int*!! )

02 试错
int* createArray(int n) { //创建函数,返回值为int指针,参数为一个int变量 int arr[n]={0,10,20}; //创建数组arr // for(int i=0;i<10;i++) { // printf("%d\n",arr[i]); // } return arr; //返回值为指针int* arr } int main() { int* parr=createArray(10); //创建指针 int*parr=数组存储地址 for(int i=0;i<10;i++) { printf("%d\n",parr[i]);//输出数组存储的数据 } }

结果无论是本代码还是输出*parr都会导致崩溃,注释化的输出数组元素仍然可以正常运行(可以CLion和DEV C++一起用找错),原因是:

变量的生命周期(有界性):
定义一个变量之后 它在什么时候会消失? 在该变量定义的大括号范围之外就不能使用了
arr是函数内定义的变量,函数外无法调用

03 解决方式 动态数组

使用内存分配函数,相当于在内存中分配一块空间用于储存数据,不会因有界性而失效

格式:数据类型 *数组名=(数据类型*)malloc(内存大小);

注意:内存单位为byte,因此对不同类型的数据需要分配不同大小的内存,例如 int n; malloc(n*4);

int* createArray(int n) { int *arr =(int*) malloc(n*4); // arr 是一个指针,存储的是一整块内存空间的首地址 指针相当于数组 // 使用内存分配函数分配一块内存(长n*4)给一个指针,充当一个数组 for (int i=0;i<5;i++) { *(arr+i)=i*5; //进行了初始化,非必要 } //arr[i]=i*5; 也可,数组指针通用操作 return arr; } int main() { int* parr=createArray(10); //把创建的指针*arr的地址赋值给*parr for(int i=0;i<10;i++) { //指针数组通用操作 printf("%d\n",parr[i]); //*(parr+i)也可 } }

04 扩展 字符串

字符串也是一种数组,因此支持通用操作

char name[10];
scanf("%s",&name[0]);
scanf("%s",name);
scanf("%s",&name); //三者作用相同


char *cp = (char*) malloc(10);
scanf("%s",cp); //与指针结合

相关新闻

Spring Boot个人云盘系统实战:分片上传、JWT与文件管理设计

Spring Boot个人云盘系统实战:分片上传、JWT与文件管理设计

最近做了一套基于Spring Boot的网盘类管理系统&#xff0c;核心功能就是个人云盘。像这种"Spring Boot 前端JS"的Title&#xff0c;其实是很典型的Java Web练手项目&#xff0c;网上也有各种各样的教程&#xff0c;但绝大多数都是跑通就完事&#xff0c;真正像工程一…

2026/10/21 2:24:52 阅读更多 →
29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路

29 切片的权限隔离(实战篇):Milvus + Spring AI,从 0 搭一条带权限过滤的检索链路

上一篇&#xff08;#28&#xff09;把原理讲透了&#xff1a;权限要沉到切片、过滤要下推检索层、多租户要隔离、边角要想全。道理都懂&#xff0c;但面试官最爱追的一句是——"那你具体怎么落地&#xff1f;"这篇不聊理论&#xff0c;直接从 0 搭起来&#xff1a;用…

2026/10/21 2:24:52 阅读更多 →
微信小程序实验:计时器

微信小程序实验:计时器

本案例实现倒计时计时器&#xff0c;页面初始 2 秒空白后展示计时面板&#xff0c;支持开始计时、停止计时、重新计时&#xff1b;倒计时初始值 60&#xff0c;暂停后可继续计时&#xff0c;计数到 0 自动停止。拓展功能使用 CSS 伪元素在计时框增加背景文字。知识点&#xff1…

2026/10/21 2:24:52 阅读更多 →

最新新闻

数据获取与处理实战:从数据源选择到数据清洗的完整指南

数据获取与处理实战:从数据源选择到数据清洗的完整指南

这几年做数据相关的工作&#xff0c;被问得最多的一个问题是&#xff1a;“我该从哪儿拿数据&#xff1f;拿到手之后又该怎么处理&#xff1f;”说实话&#xff0c;大多数人在第一步就卡住了&#xff0c;要么不知道怎么稳定地拿到数据&#xff0c;要么千辛万苦拿到一份Excel&am…

2026/10/21 3:08:09 阅读更多 →
C# 调用 QT 带界面 DLL:窗口嵌入与消息循环实战

C# 调用 QT 带界面 DLL:窗口嵌入与消息循环实战

简介&#xff1a;本资源面向需要在 C# 项目中复用 C Qt 界面组件的开发者&#xff0c;重点解决跨语言调用外部 UI DLL 的集成问题。资源以控制台程序调用 Qt 编译生成的界面 DLL 为主线&#xff0c;涵盖 DLL 放置路径与代码引用路径的对应关系&#xff0c;适合具备一定 C# 与 C…

2026/10/21 3:08:09 阅读更多 →
WorkTool:5 步实现无需 Root 的企业微信自动化

WorkTool:5 步实现无需 Root 的企业微信自动化

WorkTool&#xff1a;5 步实现无需 Root 的企业微信自动化 【免费下载链接】worktool 一款安全稳定的Android无障碍服务工具&#xff0c;支持控制企微/微信来运行的无人值守群管理企业微信机器人 项目地址: https://gitcode.com/GitHub_Trending/wo/worktool WorkTool 是…

2026/10/21 3:08:09 阅读更多 →
纯Delphi实现屏幕找图:模板匹配算法与性能优化实战

纯Delphi实现屏幕找图:模板匹配算法与性能优化实战

简介&#xff1a;这份Delphi图像匹配资源面向需要在Windows桌面环境中实现屏幕找图的开发者&#xff0c;适用于自动化测试、游戏辅助、屏幕抓取等场景&#xff0c;帮助解决从屏幕截取到目标定位的完整链路问题。资源包为rar压缩格式&#xff0c;整体约6.63MB&#xff0c;上游未…

2026/10/21 3:08:09 阅读更多 →
DNGM(1,1)离散灰色模型:小样本预测的Python实战与GM(1,1)对比

DNGM(1,1)离散灰色模型:小样本预测的Python实战与GM(1,1)对比

做数据分析的人&#xff0c;大概率都撞上过同一个尴尬&#xff1a;想预测下个月或者下一周期的数值&#xff0c;手里却只有五六个、七八个历史样本。经典统计模型要求大样本&#xff0c;深度学习更是无底洞式地吃数据&#xff0c;这俩在“贫数据”面前基本束手无策。灰色预测就…

2026/10/21 3:08:09 阅读更多 →
无人机航拍小目标检测数据集构建:从场景设计到智慧交通与应急救援落地

无人机航拍小目标检测数据集构建:从场景设计到智慧交通与应急救援落地

我做无人机视觉落地也有几年了&#xff0c;今年被问得最多的问题不是“模型怎么调”&#xff0c;而是“模型怎么到了现场就不灵”。很多朋友拿着公开的航拍检测模型&#xff0c;在桌面演示上mAP能到七八十个点&#xff0c;可一部署到国内的十字路口、老小区、城乡结合部&#x…

2026/10/21 3:07:07 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →