C语言指针学习笔记

一,指针与数组

通常在c语言中定义一个数组用指针来访问,这个数组名字表示数组内第一个元素的首地址。但又两种情况下数组名不代表数组首地址如下图:

二,指针的运算

(1)指针加减整数

形如int类型指针,倘若在指针变量上加减一个整数,就是在指针所指向的地之中加减四个字节。同理char为一个字节,long为八个字节。如果指针指向的是一个int类型数组,则整个数组元素的地址都加数组元素*四个字节。

(2)指针间的减法

两个指针进行相减,所得的差为两个地址间相差的字节数,如相差12个字节,int型指针所得差为3,char型所得差为12。

其中指针间的减法只可以通过两个相同类型的指针来计算,如果两个指针的类型不一致此算式无意义。

(3)指针间的逻辑运算

指针间的<,>,=,<=,>=都是在比较两个指针指向地址的先后。但是需要注意的是,不允许指针与指向数组第一个元素前一个字节的内存位置的指针进行比较。

如p1与p2可以,p1与p3不可以。

三,多级指针

如下所示,在定义一个指针变量时使用了两个**

一级指针:指向一个普通变量

二级指针:指向一个指针变量

int a=0;/一个变量/
int * pa =a;/指向a的地址的指针变量/
int* * ppa = pa;/指向pa地址的指针变量/
/*其中变量名字前的*表示该变量为指针,int表示指向一个int类型变量,int*表示指向一个一级指针*/

四,数组指针

如下所示,定义的是一个数组,里面元素存放的全是指针。

4 数组指针

指向数组的指针 如果指针后面加上了中括号【a】 对应的就是数组的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值