深入指针2

1、数组名的理解

当我们运行如上代码可以知道,数组名就是首元素的地址,但是有两个例外:

1 sizeof(arr)这里面的arr代表整个数值,计算的也是整个数组的长度。

2 &arr,这里的取地址取的是整个数组的地址。

这⾥我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是 ⾸元素的地址,+1就是跳过⼀个元素。 但是&arr 和 &arr+1相差40个字节,这就是因为&arr是数组的地址,+1 操作是跳过整个数组的。 到这⾥⼤家应该搞清楚数组名的意义了吧。 数组名是数组⾸元素的地址,但是有2个例外。

2、使用指针访问数组

如上所述,访问数组可以用指针的形式进行,当有一个数组arr,且指针指向arr时就有
arr[i]=*(p+i)

3、一维数组传参的本质

一维数组传参的本质就是传递指针,也就是将数组中首元素的地址传过去。

因此,在形参中可以用指针进行接收。

4、冒泡排序法

冒泡排序法核心思想就是将两个相邻的元素进行比较。

5、二级指针

二级指针也是指针,他是用于存放一级指针地址的。

如图所示,将二级指针解引用*ppa=pa,**ppa=*pa=a=10。

6、指针数组

可能大家会有疑惑,指针数组到底是指针还是数组,

我们举个例子:整形数组,字符数组,浮点形数组,他们都是数组,因此,指针数组是数组

举例:int *p[10];这就是一个指针数组

指针数组:用于储存指针的数组。

7、用指针数组模拟二维数组

如图,我们将一个指针数组,指向三个不同的数组,作为行,然后,将每一个数组作一行。这样就模拟出了二维数组。

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值