【C语言】数组指针

举报
謓泽 发表于 2023/09/30 15:37:50 2023/09/30
【摘要】 【C语言】数组指针

🌀 数组指针

数组是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素。数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存。那么以下列代码为例子,我们来分布图如下可进行观察 🧐

int arr[] = {1,2,3,4,5};

定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址。以上面的数组为例,下图是 arr 的指向:👇

数组指针是一种指向数组的指针,这句话在我看来是很重要的你能理解透彻的话,我觉得你的数组指针能上一个台阶多看多读几遍🥰

那么数组指针是怎么样的呢,如下代码所示 👇

int (*p)[10];

从这里我们不难去发现,原来指针数组和数组指针形成根本问题就在于操作符大小的优先级关系所在,所以当你定义变量的时候一定要去注意这个问题,不然的话就会有根本性质的不同。 

int arr[10] = {0};
int (*p)[10] = &arr;

上述代码当中取出的是数组的地址,注意取地址是取出数组所有的地址。arr 才是数组名首元素的地址相当于是 arr[0],而上述代码中取地址是不一样的,这个要区分开来。

💥重点核心在上面的代码中 p 就是一个数组指针,它是可以存放数组的地址的!

再举出一个例子,如下代码所示 👇

double* d[10];
double* (*pa)[10] = &d;

首先  pa 是个指针*,然后先把 (*pa) 先结合。pa 指向的是数组,指向的是d的数组有10个元素,所以这里一定是要写10个元素。切记!

💥注意:这个地方只能是10个元素,因为指向的数组它就是10个元素。

这样的话 pa 是一个指针指向的数组是10个元素,那么它所指向的类型是double*类型的。所以要在前面+上double*,所以,数组指针 p 指向的类型也必须要是 double* 类型的才可以。以上 pa 就 是 数组指针,和上面 p 都是属于是数组指针类型的。

不知道,你看完之后明白了 数组指针 和 指针数组 了没有,总之我刚学的时候真的是一脸懵逼。这两个总是能够搞混淆😅还放弃了不想学指针的念头哈哈,但是这是绝对不可以的 🤐 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。