深入理解指针(8)

本文介绍了C语言中的二级指针概念,一级指针的基础以及如何使用指针数组模拟二维数组。通过实例展示了如何利用指针数组结构实现类似二维数组的效果,包括必要的代码调整以达到正确打印。
摘要由CSDN通过智能技术生成

        上篇我们讲到了一维数组传参和冒泡排序,本篇我们继续精进指针数组,本篇要讲的是:

1.二级指针

        在讲二级指针之前,我们得知道既然有二级指针,那必然存在一级指针,那么什么是一级指针呢?我先来举个例子:

        如上图所示,int* p = &a是指针最简单的用法,这种用法我们称为一级指针,其实就是指针变量接收了一个变量的地址。

        那什么是二级指针呢?

        如代码所示 int * * pp = &p 即二级指针,因为这个int * * pp拆分开来有不同的意思。以一级指针为例子:int * p = &a 是一级指针,p接收了a的地址,然后int * * pp = &p就是把p的地址交给了pp,而中间的两个 * ,第一个是和int一起解读的,即*pp变量的类型为int * ,第二个 * 说明的是pp是指针变量。而他的格式其实和一级指针很像,实际上就是另一种形式的嵌套。

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

        首先是指针数组的概念我们必须了解一下,众所周知数组可以分为整形数组,字符数组......而整形数组的含义是:存放整形的数组。字符函数的含义是:存放字符的数组。以此类推:指针数组即存放指针的数组。既然数组可以存放指针,那么二级指针的作用在二维数组就体现出来了。
        既然理解了指针数组的概念,我们就要来进行实际应用:

       这是一个简单的指针数组模拟二维数组,从结果上来看确实是达成了二维数组的效果,但是这个指针数组却不是真正意义上的二维数组。可以看到我是arr1 arr2 arr3 三个数组的地址全部递给了指针数组* arr,正常来讲应该是从左到右打印所有数字,所以在模拟实现的时候我在for循环内加上了printf("\n"),让其打印完第一个数组的数字的时候换行进行打印,如此往复循环就模拟实现了二维数组。

        这就是本篇要讲的所有内容,希望能对你们能够有所帮助,我们下篇见。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值