深入了解指针(二)

一数组名的理解
二⼀维数组传参的本质
三.⼆级指针
四指针数组
五指针数组模拟⼆维数组

终于到第二篇指针文章了!!

一数组名的理解

我们来定义指针变量p1和p2来把arr和arr[0]的地址打印出来发现都一样。

在这里插入图片描述

在进行指针的加法,发现跳过的是住在组中一个元素的字节。
在这里插入图片描述

由此可以推断出数组名就是数组首元素的地址。

但还是有两个例外
1.sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,
单位是字节
2.&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素
的地址是有区别的)
除此之外,任何地⽅使⽤数组名,数组名都表⽰⾸元素的地址。

二⼀维数组传参的本质
在这里插入图片描述

此处形参可以写成数组arr[]的形式,等于*arr。根据一中所讲。如果实参传过去的是整个数组,那么sizeof(arr)就是40个字节,如果是数组首元素的地址就是一个指针的变量。所以在函数内部是不能得到数组的个数。
应该在主函数计算出来,再传给函数。

三.⼆级指针

指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪⾥?
这就是 ⼆级指针 。

#include<stdio.h>

int main()
{
	int a = 0;
	int* pa = &a;
	int** ppa = &pa;

	return 0;
}

在这里插入图片描述

四指针数组

指针数组是指针还是数组?
我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。
那指针数组呢?是存放指针的数组
指针数组的每个元素都是⽤来存放地址(指针)的。
如下图:

在这里插入图片描述

五指针数组模拟⼆维数
在这里插入图片描述

上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。
在这里插入图片描述

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值