指针家族

本文深入解析指针与数组的本质区别,包括一级指针、二级指针的概念,以及指针数组的定义和用途。通过对比指针与数组的特性,帮助读者理解它们在内存中的不同表现和操作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    指针有一级指针、二级指针、三家指针......很多人初学者都觉得指针太难了,太抽象了,不好理解。那么我们来想一想,指针的实质是什么呢?是地址,把一块空间A的地址放在另一块空间p里边,*p就可以得到A的地址,如果A里放的是整形,int *p=&A,那么p就是一个指针变量,int *就是该变量的类型。int *p就是一个一级指针。如果将p的地址存放在空间pp中,则int **pp=&p,其中pp就是一个二级指针,因为它的空间中存放着一级指针p的地址。pp的类型是int **。
    很多人都把指针和数组分不清,其实他们有很大的差别,数组的数组名表示该数组首元素地址,指针的实质也是地址,可能因为他们都是地址的缘故,所以才有人分不清。对数取地址拿到的是整个数组的地址(也就是数组指针),如果我们打印出来比较的话它和数组首元素地址并无差别,但他们具有的能力不同,如果对其进行运算的话,(比如对其加一,你会发现数组的地址一次性跳过整个数组,而数组首元素地址一次只跳过一个元素)你会发现他们的步长并不相同。
    还有一种指针的类型叫做指针数组,这种指针我们并不常见,从其名字来看,它的本质是数组,那么它跟指针又有什么关系呢?虽然指针数组是数组,但它里边存储的元素是指针。简单来说,指针数组就是将同一类型的指针存放在一个数组中,这个数组就叫指针数组(比如一个叫arr的数组,其中有若干个元素,每个元素的类型都int *,所以arr就是一个整形指针数组)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值