鱼C论坛

 找回密码
 立即注册
查看: 3992|回复: 28

[已解决]数组名与数组第一个元素地址还有数组的地址的区别

[复制链接]
发表于 2021-9-26 23:46:46 | 显示全部楼层 |阅读模式
10鱼币
1.这三个意义都是指什么?
2.定义一个一维数组 array[5]={1,2,3,4,5};
                           int (*P)[5]=&array;
从数组指针的赋值是不是可以看出数组名array加上&就表示数组的地址呢?
那么数组名只是与数组首元素的地址在数值上相等,它的意义又是什么呢?
3.定义一个二位数组 temp[4][5];
视频里说二位数组的数组名temp可以理解为指向包含五个元素的数组的指针,把二维数组temp当成一个包含四个元素的一维数组,这四个元素每一个又可以当成是包含五个元素的一维数组,
那么temp[0]是不是可以当成temp[0][0]~temp[0][4]的数组名呢?
数组名temp指向的是不是temp[0]这一维度的数组还是指向这一维度数组的首元素temp[0][0]?
最佳答案
2021-9-26 23:46:47
bszs 发表于 2021-9-27 21:19
图片上的代码和输出我全明白,我看了数组指针和指针与二维数组后一直迷糊数组名,数组指针赋值给指针的是 ...
  1. 数组名是数组第 0 个元素的地址
  2. C语言中没有二维数组,没有三维数组,没有多维数组
  3. C语言中的是 数组中存储数组,为了方便才称之为 二维数组,三维数组,四维数组,。。。
  4. int a[3];         // a 是一个数组,有 3 个元素,每一个元素的类型都是 int
  5. char b[4][2]   // b 是一个数组,有 4 个元素,每一个元素的类型都是 一个数组
  6.                     // 这个数组有 2 个元素,每一个元素的类型都是 char

  7. 是数组的数组
  8. 数组中存储的是数组
  9. 为了方便才称之为 二维数组,实际是 数组中存储数组

  10. 数组名是数组第 0 个元素的地址
  11. a 就是 &a[0]
  12. b 就是 &b[0]
  13. b[0] 就是 &b[0][0]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-26 23:48:19 | 显示全部楼层
这个地方挺迷糊的,主要还是不理解数组名与数组首元素还有数组的地址的区别
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 00:20:11 | 显示全部楼层
人造人 发表于 2021-9-27 00:02
地址的值一样,但是类型不同

c++看不懂~~~~
数组首元素地址和数组的地址好理解,但数组名是具体指啥啊?
把一个二维数组每行都当成一个一维数组来看,一行的第一个元素是否可以当成这个一维数组的数组名呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 00:29:49 | 显示全部楼层
人造人 发表于 2021-9-27 00:02
地址的值一样,但是类型不同

看到那个指针与二维数组的时候,二维数组array[4][5]的数组名array当成了指向五个元素的数组的指针,就想着,这不是数组指针吗?数组指针赋值的是整个数组的地址,那么这个二维数组名array是不是也存放着第一行·的地址?或者把这一行当成包含五个元素的一维数组array[0],那就是array指针存放着整个数组array[0]的地址?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 16:37:40 | 显示全部楼层
2736946915 发表于 2021-9-27 04:33
如图:
数组的访问和指针差不多,
int array[5]{1,2,3,4,5}

也就是说二维数组数组名可以当成指针但是和数组指针不一样,数组指针指向的是整个数组,存放的是数组的地址,而二维数组存放的是数组每行首元素的地址
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 19:03:26 | 显示全部楼层
2736946915 发表于 2021-9-27 18:21
是的,你可以把它当成指针,但是后面说错了,数组指针和数组名指向的地址都是一样的,本质相同;
数组指 ...

但是数组指针那一节里说的是数组指针指向的是数组的地址,而数组的地址、数组名和数组首元素的地址值相同性质不同
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 20:46:52 | 显示全部楼层
人造人 发表于 2021-9-27 00:39
你先看一看我写的那些内容,还有前面两个帖子的内容
看看能理解多少

二维数组数组名可以当成指针但是和数组指针不一样,数组指针指向的是整个数组,存放的是数组的地址,而二维数组存放的是数组每行首元素的地址
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 20:47:36 | 显示全部楼层
人造人 发表于 2021-9-27 00:39
你先看一看我写的那些内容,还有前面两个帖子的内容
看看能理解多少

我这样理解还吗?两个大佬都教不会我,我吐了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 21:19:48 | 显示全部楼层
人造人 发表于 2021-9-27 21:04
我写了那么多(还有那个两个帖子的内容),你看懂了多少?
你目前哪里不明白?

图片上的代码和输出我全明白,我看了数组指针和指针与二维数组后一直迷糊数组名,数组指针赋值给指针的是数组的地址,解引用后就是数组首元素的地址,但是二维数组第一层解引用得到的地址具体是哪个类型我搞不清
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 21:23:34 | 显示全部楼层
2736946915 发表于 2021-9-27 21:08
这个就得看你是怎么理解的了,简单理解可以区分,因为怕刚开始学习,把数组和指针弄混淆,
区别就在于:
...

数组名是个地址常量,而指针是个地址变量,,那么二维数组数组名是个常量,往里面存入的也是个常量,所以说对二维数组数组名解引用是第一行第一列元素的地址?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 22:39:45 | 显示全部楼层

感谢大佬我明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-27 22:41:03 | 显示全部楼层
2736946915 发表于 2021-9-27 21:08
这个就得看你是怎么理解的了,简单理解可以区分,因为怕刚开始学习,把数组和指针弄混淆,
区别就在于:
...

感谢感谢,抱歉鱼币只能给一个人
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-28 12:51:53 | 显示全部楼层
2736946915 发表于 2021-9-28 11:46
鱼币是啥?干嘛用的?

会员不需要鱼币,但是我问问题要悬赏
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-28 07:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表