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

从头开始学C语言第二十三天——指针概念

使用指针可以使程序简洁高效,有效表达复杂数据结构,动态分配内存空间,得到多余一个的函数返回值。

地址

在理解指针之前,先对计算机内存中的地址做一定了解。在计算机内存当中,以字节为单位,每一个字节单元都有对应的编号。这个编号称为地址。

如下图所示,左边表示的是计算机内存,前面的数字就是我们所说的字节单元编号,也就是地址,右边的char a,short b,int c是相应的数据,前面的数据类型我们可以知道char占用1个字节,所以占一个字节单元,short占用2个字节,所以需要占两个字节单元,因此占用了102,103两个单元。以此类推。

 编译或者调用函数为变量分配内存;变量其实是对程序当中数据存储空间的抽象。因为在计算机中数据是以地址的方式存储,变量名只是方便我们去理解和操作。

在访问或者调用数据的时候我们有两种方式,一种比较直接,我们已知内存中该变量的变量名称,且内存中只有1个这个变量名称,我们可以直接搜索变量名称来找到我们需要调用的变量;另一种我们可以通过访问该变量所在地址的方式去找到和调用变量。以上图为例,假如说我们知道内存中名称是a的变量只有一个,那我们可以直接通过搜索a这个名称的变量找到并调用;或者我们可以搜索a变量所在的内存单元101,也可以找到并调用a。

指针概念

在C语言中,内存单元的地址被称为指针,用来专门存放地址的变量,有时对地址,指针和指针变量不做区分,简单来说就是地址=指针。

指针变量

格式:<存储类型> <数据类型> *<指针变量名>;

例如:char *pa;(在变量名前+p,用于说明该变量为指针变量,不是数据变量)

注意:

指针的存储类型是指针变量本身的存储类型

指针说明时,指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型,简称指针的数据类型。

指针的说明时,也可以被赋值,称为指针的初始化

一般形式:

<存储类型> <数据类型> <指针变量名> = <地址量>;

int a=3;//int a定义整型变量a;a=3对a初始化,赋值为3

int *pa = &a;//int *pa定义整形指针*pa;*pa = &a表示将a的地址作为初值赋值给指针*pa

#include <stdio.h>

int main()
{
    int a=10;
    int *pa = &a;

    printf("%p %p",pa,&a);

    printf(" %p",&pa);

    printf(" %d %d",a,*pa);

    printf(" %d",sizeof(pa));

    return 0;
}

 定义了一个变量:a,初值为10,存放数据的地址在103;

定义了一个指针:*pa,初值为103,即a数据存放的地址,该指针变量的地址为207。

因此,我们在访问地址的时候有两种方法:

printf("%p %p",pa,&a);pa的数据就是a的地址,也可以通过&a直接获得地址

printf("%p",pa);表示的是指针变量pa所存放的地址

相关文章:

  • MFC控件按钮的使用
  • 深入浅出消息队列 (MQ)
  • Java 断言(Assert)机制
  • pgAdmin 4汉化,设置界面为中文
  • 机器学习(七)
  • 太速科技-636-基于FMC的Kintex XCKU060高性能PCIe载板
  • LVI-SAM、VINS-Mono、LIO-SAM算法的阅读参考和m2dgr数据集上的复现(留作学习使用)
  • python广度优先搜索(BFS)算法
  • 16.使用读写包操作Excel文件:XlsxWriter 包
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(47)乾坤图演路径 - 欧拉路径(Hierholzer 算法)
  • 完善机器人:让 DeepSeek 使用Vue Element UI快速搭建 AI 交互页面
  • vue埋点
  • LinuX---进程线程类
  • DFS深度优先搜索
  • 完善机器人:让 DeepSeek 生成 API 接口,并在网页上调用
  • 浅谈数据分析及数据思维
  • Android/AOSP源码编译错误:TEMPORARY_DISABLE_PATH_RESTRICTIONS
  • Linux从零搭建Dify智能体平台(包含网络代理、docker安装、docker镜像地址设置)
  • flinkOracleCdc源码介绍
  • Java8的新特性
  • 美国务卿会见叙利亚外长,沙特等国表示将支持叙利亚重建
  • 一涉嫌开设赌场的网上在逃人员在山东威海落网
  • 联合国报告:全球经济前景恶化,面临高度不确定性
  • 农行再回应客户办理业务期间离世:亲属连续三次输错密码,理解亲属悲痛,将协助做好善后
  • 河南:响鼓重锤对违规吃喝问题露头就打、反复敲打、人人喊打
  • 商务部:长和集团出售港口交易各方不得规避审查