深入理解指针(指针与数组)

目录:

1.数组名的理解
2.使用指针访问数组
3.一维数组传参的本质
4.冒泡排序
5.二级指针
6.指针数组
7.指针数组模拟二维数组

1.数组名的理解

我们前面写到过数组名就是首元素地址,那就是是不是呢?我么来验证一下
在这里插入图片描述
挖去,还真是!
所以基本可以说:数组名就是首元素的地址。&fxk[0]=fxk

但是有两个例外:
1.sizeof(数组名)
这里的数组名表示整个数组,计算的是整个数组的大小
2.&数组名
这里的数组名也表示整个数组,取出的是整个数组的地址。

再来看下面代码:
在这里插入图片描述
小笨是不是又蒙了,按前面的说法应该是前两个相同,第三个不同啊,为什么都相同?
在这里插入图片描述
通过上面代码我们就能发现原因了,前两个加1都是差了四个字节(一个int)而最后一个则差了40个字节(整个数组)。

所以看上去表面相同,实际上不同。

2.使用指针访问数组

为什么可以使用指针访问数组:
1.数组在内存中是连续存放的
2.指针的运算很方便的遍历数组,取出数组的内容

注意:
1.数组就是数组,是一块连续的空间,是可以存放一个或者多个数组的。
2.指针变量是一个变量,是可以存放地址的变量。
这俩不是一回事,但是可以通过指针访问数组。

3.一维数组传参的本质

数组传参的本质:传递的是数组首元素的地址。所以形参即使写成数组的形式,本质上也是一个指针变量。
如下图:在这里插入图片描述

4.冒泡排序

核心思想:相邻一对作比较,符合条件就下一对,不符合条件就交换。

条件:升序/降序
在这里插入图片描述

5.二级指针

5.1什么是二级指针?

二级指针说白了就是一级指针变量的指针

int main()
{
int a=10;//&a就是一级指针
int*p=&a;//&p就是二级指针
int**ppa=&p;//p是一级指针变量
return 0;//ppa是二级指针变量。
*(*ppa)=*(p)=a=10
//ppa存放的是p的地址
//p存放的是a的地址
}

在这里插入图片描述
二级指针变量存放一级指针变量的地址。

注意二级指针变量有俩**。

6.指针数组

概念:元素类型为指针(地址)的数组。
例如:int* fxk[6];fxk是存放整型指针的数组。
打印指针数组:
在这里插入图片描述

7.指针数组模拟二维数组

在这里插入图片描述
在这里插入图片描述

  • 16
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值