鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: bszs

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

[复制链接]
 楼主| 发表于 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:07:59 | 显示全部楼层
  1. a 就是 &a[0]
  2. b 就是 &b[0]
  3. b[0] 就是 &b[0][0]

  4. *a 就是 *&a[0] 就是 a[0]
  5. *b 就是 *&b[0] 就是 b[0] 就是 &b[0][0]
  6. *b[0] 就是 *&b[0][0] 就是 b[0][0]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-27 22:19:04 | 显示全部楼层
数组名是数组第 0 个元素的地址

  1. #include <stdio.h>

  2. int main() {
  3.     long long a[4][2] = {
  4.         {123, 456},
  5.         {223, 556},
  6.         {323, 656},
  7.         {423, 756}
  8.     };
  9.     long long (*x)[4][2];
  10.     x = &a;
  11.     long long (*y)[2];
  12.     y = a;
  13.     y = &a[0];
  14.     long long *z;
  15.     z = a[0];
  16.     z = a[1];
  17.     z = a[2];
  18.     z = a[3];
  19.     z = &a[0][0];
  20.     z = &a[1][0];
  21.     z = &a[2][0];
  22.     z = &a[3][0];
  23.     return 0;
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-27 22:22:19 | 显示全部楼层
  1. #include <stdio.h>

  2. int main() {
  3.     long long a[4][2] = {
  4.         {123, 456},
  5.         {223, 556},
  6.         {323, 656},
  7.         {423, 756}
  8.     };
  9.     long long (*x)[4][2];
  10.     x = &a;
  11.     long long (*y)[2];
  12.     y = a;
  13.     y = &a[0];
  14.     long long *z;
  15.     z = a[0];
  16.     z = a[1];
  17.     z = a[2];
  18.     z = a[3];
  19.     z = &a[0][0];
  20.     z = &a[1][0];
  21.     z = &a[2][0];
  22.     z = &a[3][0];
  23.     long long i;
  24.     i = *z;
  25.     i = *a[0];
  26.     i = *a[1];
  27.     i = *a[2];
  28.     i = *a[3];
  29.     i = *&a[0][0];
  30.     i = *&a[1][0];
  31.     i = *&a[2][0];
  32.     i = *&a[3][0];
  33.     long long *j;
  34.     j = *y;
  35.     j = *a;
  36.     j = *&a[0];
  37.     long long (*k)[2];
  38.     k = *x;
  39.     k = *&a;
  40.     return 0;
  41. }
复制代码
小甲鱼最新课程 -> 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 11:46:40 | 显示全部楼层
bszs 发表于 2021-9-27 22:41
感谢感谢,抱歉鱼币只能给一个人

鱼币是啥?干嘛用的?
小甲鱼最新课程 -> 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-4-29 19:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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