C语言指针

本文详细介绍了指针的概念,包括指针作为数据类型的作用,不同指针类型处理不同步长地址,多级指针用于多维数组和存储上一级指针,以及指针赋值的规则。同时提到了万能指针void*的特殊用途,如在函数返回不同类型地址的场景。
摘要由CSDN通过智能技术生成

1.指针是什么?谈谈对指针的理解?

指针是一种数据类型,它可以定义变量,变量保存的值是地址,由于地址是固定长度,所以指针变量的长度是固定长度;不同地址的步长不一样,需要不同指针类型的变量来保存;

作用:由于指针变量可以保存地址,所以可以直接操作地址,也就是可以直接操作寄存器地址,从而实现直接访问硬件

int *   p;//整型指针变量;p是一个变量,保存的是地址,地址是整型地址

地址为什么分不同的类型?---》不同类型的指针变量保存不同步长的地址

地址属性:步长(加一所移动的字节数)

&p怎么保存?

二级指针,

int **pp; //整型指针的指针变量
pp是一个变量,保存的是一个地址,地址对应的内存空间中保存的还是一个地址,这个地址是整型的

多级指针作用:用来保存上一级指针变量的地址(远指针 ,近指针)

什么时候使用多级指针?

多维数组时候使用

指针之间的运算:

赋值:相同类型指针之间的赋值

短指针赋值给长指针,会多取数据

长指针赋值给短指针,会丢失数据

p + 操作数    指针  + 指针:error

p  - 操作数    指针  -  指针:相差数据类型的个数

注意:万能指针 void *   可以接收任意类型,步长一个字节

万能指针作用:函数返回可能为不同类型的地址 

 总结而言:首先指针是一种数据类型,它可以定义变量,变量保存的值是地址,由于地址是固定长度,所以指针变量的长度是固定长度;不同地址的步长不一样,所以需要不同指针类型的变量来保存;由于指针变量可以保存地址,所以可以直接操作地址,也就是可以直接操作寄存器地址,从而实现直接访问硬件,细说指针变量的话,指针又有多级指针,多级指针直接点说就是能保存上一级指针的地址,多数在操作多维数组中的元素时候使用多级指针,指针的赋值只能发生在相同类型的指针之间,如果步长不同,短指针赋值给长指针,会多取数据;长指针赋值给短指针,会丢失数据,还有万能指针可以接收任意类型的指针,但是其操作步长只有1个字节,用在函数返回可能为不同的类型的地址时使用,例如malloc的分配函数返回值就是void *,所以在分配内存时前面需要加上对应类型的强制类型转换。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值