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

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。
在前面讨论传值和传址的时候,我们就已经开始使用了指针来传递地址。
在正式介绍指针之前,我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道,每个房子都有自己的地址,叫内存地址。在大多数计算机使用 8 位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。下图简单展示了一下内存编址。
在这里插入图片描述
在C语言中,每个变量都存储在内存中的一个位置上,这个位置可以通过地址来访问。
如何获取变量的地址呢?用取址运算符 &来获取。
那获取的这个地址存储在哪里呢?指针。一个指针变量就是存储了内存地址值的变量。
有了地址之后,如何读取地址上的数据呢?可以用解引用运算符 * 来获取。
总结来说有几个重要的概念:
1. 内存地址:指示了变量存储在内存中的确切位置。
2. 指针变量:存储了内存地址值的变量。
3. 取址运算符(&):用取址运算符 & 来获取一个变量的内存地址。
4. 解引用运算符(*):用解引用运算符 * 来获取指向地址上存储的数据。
示例:

int var = 10; // 一个普通的整数变量
int *ptr = &var; // 一个指针变量,存储了var的地址

printf("var的值: %d\n", var); // 输出 var 的值
printf("var的地址: %p\n", &var); // 输出 var 的地址
printf("ptr存储的地址: %p\n", ptr); // 输出 ptr 存储的地址(即 var 的地址)
printf("ptr存储的地址: 0x%lx\n", ptr); // 输出 ptr 存储的地址(即 var 的地址)
printf("ptr解引用的值: %d\n", *ptr); // 通过 ptr 指针解引用访问 var 的值

在这个示例中,var 是一个普通的整数变量,ptr 是一个类型为 int *(指向int的指针)的指针变量,它存储了 var 变量的地址。通过 *ptr 我们可以访问 var 变量的值,尽管我们并没有直接使用 var 这个变量名。
总的来说指针的用途如下:
● 指针存储内存地址。
● 指针可以间接访问和操作内存中的数据。
● 指针可以使函数能够修改接收到的变量(传址,上一节讲述到)。
● 指针可以用于动态内存分配。
在C语言中,任何一个变量和函数类型,都可以有对应的指针。
这里只是简单介绍了一下指针的概念,指针与数组的关系比较密切,关于指针的使用,我们在后续介绍数组的时候,会详细介绍。


http://www.kler.cn/a/232116.html

相关文章:

  • Python 打包教程:从零开始构建可分发的Python包
  • 【WebRTC】视频发送链路中类的简单分析(下)
  • Javascript_设计模式(二)
  • GitHub新手入门 - 从创建仓库到协作管理
  • 自动驾驶仿真:软件在环(SIL)测试详解(精简版入门)
  • AlphaFold3中文使用说明
  • vue.js基于springboot的实验室设备管理系统10345
  • 51单片机之LED灯模块篇
  • 牛客网SQL264:查询每个日期新用户的次日留存率
  • Flink流式数据倾斜
  • 如何在 Debian 11 上安装 Python 3 并设置编程环境
  • 2023年哪个前端框架用的最多?
  • 计划任务功能优化,应用商店上架软件超过100款,1Panel开源面板v1.9.6发布
  • 华为第二批难题五:AI技术提升六面体网格生成自动化问题
  • 【深度学习:SegGPT】在上下文中分割所有内容 [解释]
  • Stable Diffusion 模型下载:RealCartoon-Pixar - V8
  • [经典问题][AC代码]玉米地(CowFood)
  • C++ STL 教程
  • 【数据分享】1929-2023年全球站点的逐月平均风速(Shp\Excel\免费获取)
  • Java基础常见面试题总结-集合(二)
  • 数据结构 - 线索树
  • 关于 Rust程序设计语言-构建多线程 Web服务器 一章的一些问题
  • 解决CORS错误(Spring Boot)
  • C#静态数组删除数组元素不改变数组长度 vs 动态数组删除数组元素改变数组长度
  • rust嵌入式开发之RTICvsEmbassy
  • 【Langchain Agent研究】SalesGPT项目介绍(一)