C语言中的存储类型

指针

在内存中定义变量(申请内存空间)存储数据,但是每个存储数据变量都有地址,地址也能找到内存空间,通过地址也可以操作到内存空间的值

image.png

指针:存储地址的变量,就叫做指针,也叫做指针变量

指针也会占用内存空间,但是指针占用内存空间,空间中存储的是地址值

指针就是操作内存地址,使用内存地址

定义指针变量:

指针变量:本质上是一个变量,存储内存地址

格式:

指向数据类型*变量名;

指向数据类型:指针变量存储哪种数据类型的地址;指向哪种数据类型

*:指针变量

指针变量的类型:指向数据类型*

&变量名:变量的地址

&:取地址运算符

注意:如果指针变量存储某个内存地址,则只有这个地址的内存空间被申请之后,才能通过地址进行访问空间

int a;

int * p = &a;

使用指针变量:

指针变量存储:

指针变量 = 地址(内存空间能够使用的地址)

指针变量访问内存空间数据:

指针访问变量:

* 指针变量名

访问指针变量存储的地址对应的内存空间中的数据

int *p;

p = &a;

*p;//访问a中的数据值,使用变量名就是使用变量的值,所以 *p 不是访问p这个指针变量的值,而是p这个指针变量值为地址,访问对应内存地址中的内存空间的值

image.png

指针变量 赋值地址:通过地址,建立指针与内存空间的联系

指针变量使用间接取值符( * ):得到对应空间的数据

对变量取地址时,如果变量有多个字节,则&a,表示取的首地址,地址最小的那个字节地址

野指针:

指针记录(存储)的地址不明确,或非法的内存地址不具有使用操作权限

注意:野指针不要 直接 取 * 操作

int * p;//野指针

空指针:

指针记录的是0x0000 地址,使用 宏 NULL 表示

#define NULL(void *)0x00

系统规定 NULL 地址 不允许访问操作,只要操作就会报错

通常 使用 NULL 表示 该指针变量,现在不可用

int * p = NULL;//空指针

万能指针:

void:表示空类型,不能直接定义变量,因为定义变量也不知道其变量的大小

void * 类型指针变量 表示一个万能指针,可以存储其他任意类型的地址,也可以把void * 类型指针赋值给其他任意类型的指针

void * 类型指针,不能进行除了赋值运算的其他任何指针操作

int * a = &x;

void * b;

b = a;

double * c;

c = b;

2、指针的运算

指针变量的存储大小:

image.png

指针运算:

指针的算数运算:+、- 算数运算

表示指针向前或向后移动地址(移动指针存储的地址)

指针 + 整数n:

地址向增大方向 移动 n个 指向数据类型大小

指针 - 整数n:

地址向减小方向 移动 n 个 指向数据类型大小

指针没有 * 、 / 、% 运算

注意:指针进行算数运算后,类型还是原指向类型

指针++、++指针、指针--、--指针

posted @   龠菜粤爱玩  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示