新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言基础——指针

发布时间:2026/9/30 5:14:43来源:尧图网络
C语言基础——指针
指针是C语言中的一个重要概念也是C语言的一个重要特色。正确而灵活地运用它可以有效地表示复杂的数据结构能动态分配内存指针 提供了一个能力 --直接使用内存方便地使用字符串有效而方便地使用数组在调用函数时能获得1个以上的结果能直接处理内存单元地址等这对设计系统软件是非常必要的。一、指针是什么计算机的内存是按字节进行编址的 一个字节一个地址编号(地址)指针就是地址地址就是内存单元的编号。二、指针类型定义指针变量的一般形式为基类型 * 指针变量名;(1) (2) (3)说明:(1)基类型 : 表示的是 指针(地址) 所指向的空间的 数据类型(2) * : 定义指针变量时只是用来说明该变量 是指针类型(3)指针变量名: 就是一个标识符 和 普通变量的命名规则一致eg:int a 10; //int * pa; //定义了一个指针变量p//定义了一个指向int型数据的指针变量p//定义了指针变量 意味着 也要开空间// a 取地址运算 表示取到a所在空间的起始地址空间开多大 取决于 p对应的数据类型p对应的数据类型 ---指针类型 int*32位 系统 --- 对应地址大小 统一都是32位 --4个字节64位 系统 --- 对应地址大小 统一都是64位 --8个字节对于a这块空间的使用有两种方式1.直接通过a使用 --- 直接引用2.间接引用 --- 指针的方式int a 10;int *p a;step1(找): 首先通过p本身可以得到 a所在空间的地址 //通过p本身 只是 能找到astep2(用): 解引用*p运算过程://step1: 拿出p中地址编号到内存中寻找//step2: 从定位处开始 偏移出sizeof(基类型)大小的一块空间//step3: 将偏移出的这块空间当做一个基类型变量来看*p 运算结果 相当于是一个 int型变量三、指针的最大的一个用法——实现被调用修改主调egint addOne(int *p)//接收n的地址 { *p*p1;//解引用对n进行操作修改了n的值 } int main(void) { int n10; addOne(n);//想要被调修改n这个变量就把n的地址传过去 printf(%d\n,n);//打印结果是11主函数中的n被修改了 return 0; }注意:被调修改主调1.要修改谁就传谁的地址2.在被调函数中一定要有相应的*p运算四、指针操作一维数组int a[10] {1,2,3,4,5,6,8,9,10};数组特点:1.连续性2.单一性 --类型一致3.有序性 --按顺序存放数组名从值的的角度数组名代表数组首元素的地址 首元素地址也是整个数组起始地址知道了首元素地址就能访问首元素int *p a; a[0]; // a[0] 是啥类型 --- 是int类型//a[0] 取了一个存放int型数据空间的地址 // int *指针运算:p 1 //表示地址 加了 一个基类型大小p N //表示地址 加了 N个基类型大小p p --p-q //必须是同类型指针 表示 差了几个基类型关系运算: !p q //地址编号 编号大的 就大指针操作数组1.因为数组的特点只需要知道首元素地址即可2.指针运算pN3.指针 * 运算pi 第i个元素的地址 i可以是 0 1 2 ...*(pi) 第i个元素(变量) 等价于 a[i]
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深度学习调参实战指南:从超参数搜索到训练管道优化的系统方法 2026/9/30 7:55:32

深度学习调参实战指南:从超参数搜索到训练管道优化的系统方法

简介:这份《深度学习调参指南中文版》源自Google研究团队Varun Godbole等人撰写的经典调优手册,面向具备机器学习基础、希望系统提升模型性能的工程师与研究人员。文档从基础理论延伸到高级技巧,涵盖损失函数选择、优化器比较、超参数调整策略…

阅读更多 →
JSON与JSON-RPC的区别:数据格式与通信协议的实战解析 2026/9/30 7:55:32

JSON与JSON-RPC的区别:数据格式与通信协议的实战解析

1. 先说透一件事:JSON 是数据格式,JSON-RPC 是通信协议 做了十几年接口开发,我见过太多人在同一个问题上栽跟头:看到"JSON-RPC"这个名字,就下意识以为它是 JSON 的某种增强版,或者干脆把它当成&q…

阅读更多 →
UE在Windows交叉编译Linux打包:工具链配置与RunUAT命令详解 2026/9/30 7:55:31

UE在Windows交叉编译Linux打包:工具链配置与RunUAT命令详解

手上只有一台Windows打包机,项目却要出Linux版本——这个局面我在几个团队里都碰到过。运维不想再养一台Linux构建机,发行版升级还容易把老构建环境搞崩,最后能落地的方案基本只有一个:在Windows上装UE自带的Linux交叉编译工具链&…

阅读更多 →
基于Flutter与自研解析器的OpenHarmony JSON格式化工具实践 2026/9/30 7:55:31

基于Flutter与自研解析器的OpenHarmony JSON格式化工具实践

1. 从“为什么不用 ArkTS 原生”说起:工具类App在OpenHarmony上的选型逻辑1.1 一个每天都在发生的真实需求这个项目的起点其实非常朴素:团队在 OpenHarmony 设备上做内部效率工具,每天都要面对接口联调、日志排查和配置整理。你从网页控制台复…

阅读更多 →
JSP企业内部办公系统设计与实现:从模块规划到部署全指南 2026/9/30 7:55:24

JSP企业内部办公系统设计与实现:从模块规划到部署全指南

JSP企业内部办公系统这个题目,看起来有点土,但每年毕业设计选题榜上从来没掉过前十,很多中小公司内部也还在维护着这类老系统。我帮人做过好几套同类项目,也当过评审看过不少学生交付的“办公系统”,有一句实在话放在前…

阅读更多 →
动车组基本结构:动力分散、转向架、牵引制动与网络控制 2026/9/30 7:55:24

动车组基本结构:动力分散、转向架、牵引制动与网络控制

“动车组基本结构”这六个字,看起来像车辆工程教材的目录条目,但我在带新人时从来不把它当名词解释讲——因为后面所有的检修规程、故障代码、限速命令、乃至司机的每一次手柄操作,几乎都能回溯到这几个结构模块上。你要是能把一辆动车组拆成…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉