欢迎光临散文网 会员登陆 & 注册

【C语言】指针进阶第二站:指针数组!

2022-08-12 16:03 作者:C语言编程__Plus  | 我要投稿

指针进阶的第二站:指针数组到了!

上车上车!


@51CTO,博主:暮雪年华

指针数组

数组是一种类型的数的集合

整型数组的元素都是int类型

指针数组的元素都是指针变量

参考这一份示意图


示例1:定义多个字符指针

在上一站的字符指针里面,提到了可以直接用指针来创建一个常量字符串

同理,我们可以将多个指针放在一块,凑成指针数组,一次性创建多个指向常量字符串的指针

示例2:存放数组名的数组

在之前的学习中,我们知道:数组名代表数组首元素的地址

可以说,数组名本质上也是一个指针

既然是指针,就能放进指针数组里面

这串代码中,我们需要了解的是arr[i][j]和*(*(arr+i)+j)之间的关系

以下内容若有错误,还请大家在评论区指正!


arr[i][j]和*(*(arr+i)+j)

它们都是访问数组的形式,用到了不同的操作符

但表达的含义相同:下标为i、j的元素

在内存中,数据的存储是连续的

创建一个二维数组,可以看到两行的数据是连续存放在数组里面的

既然是连续的,我们就可以用指针++的形式来访问二维数组里面的所有元素

数组名的本质是地址,是该数组首元素的地址

二维数组的首元素是第一行,数组名arr就是第一行的地址

我们可以把二维数组的每一行理解为独立的一个一维数组

这时候,二维数组的形式和上述代码中int* arr[]数组的形式就相同了


int* arr[]和二维数组的不同

int*arr数组里的元素arr1,arr2,arr3的地址是连续存放的

这里设计到一个新概念:数组指针

将在下一节讲解!


但是它们对应的各自的数组内数据并不连续

如:arr1和arr2这两个数组各自元素的地址并不连续



示例3:存放二级指针的数组

既然一级指针可以放进数组里,二级指针也是指针,同样也能塞进数组里

下面这串代码里面的arr2就是一个存放二级指针的数组

你学会了吗?下次给大家分享数组指针哦!

为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!

微信公众号:C语言编程学习基地

C语言零基础入门教程(83集全)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住大学的时光,抓住成长的每一次机会哦~

编程学习书籍分享:

编程粉丝交流:



【C语言】指针进阶第二站:指针数组!的评论 (共 条)

分享到微博请遵守国家法律