bszs 发表于 2021-9-27 21:19:48

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

图片上的代码和输出我全明白,我看了数组指针和指针与二维数组后一直迷糊数组名,数组指针赋值给指针的是数组的地址,解引用后就是数组首元素的地址,但是二维数组第一层解引用得到的地址具体是哪个类型我搞不清

bszs 发表于 2021-9-27 21:23:34

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

数组名是个地址常量,而指针是个地址变量,,那么二维数组数组名是个常量,往里面存入的也是个常量,所以说对二维数组数组名解引用是第一行第一列元素的地址?

人造人 发表于 2021-9-27 22:07:59

a 就是 &a
b 就是 &b
b 就是 &b

*a 就是 *&a 就是 a
*b 就是 *&b 就是 b 就是 &b
*b 就是 *&b 就是 b

人造人 发表于 2021-9-27 22:19:04

数组名是数组第 0 个元素的地址

#include <stdio.h>

int main() {
    long long a = {
      {123, 456},
      {223, 556},
      {323, 656},
      {423, 756}
    };
    long long (*x);
    x = &a;
    long long (*y);
    y = a;
    y = &a;
    long long *z;
    z = a;
    z = a;
    z = a;
    z = a;
    z = &a;
    z = &a;
    z = &a;
    z = &a;
    return 0;
}

人造人 发表于 2021-9-27 22:22:19

#include <stdio.h>

int main() {
    long long a = {
      {123, 456},
      {223, 556},
      {323, 656},
      {423, 756}
    };
    long long (*x);
    x = &a;
    long long (*y);
    y = a;
    y = &a;
    long long *z;
    z = a;
    z = a;
    z = a;
    z = a;
    z = &a;
    z = &a;
    z = &a;
    z = &a;
    long long i;
    i = *z;
    i = *a;
    i = *a;
    i = *a;
    i = *a;
    i = *&a;
    i = *&a;
    i = *&a;
    i = *&a;
    long long *j;
    j = *y;
    j = *a;
    j = *&a;
    long long (*k);
    k = *x;
    k = *&a;
    return 0;
}

bszs 发表于 2021-9-27 22:39:45

人造人 发表于 2021-9-27 22:22


感谢大佬我明白了

bszs 发表于 2021-9-27 22:41:03

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

感谢感谢,抱歉鱼币只能给一个人

2736946915 发表于 2021-9-28 11:46:40

bszs 发表于 2021-9-27 22:41
感谢感谢,抱歉鱼币只能给一个人

鱼币是啥?干嘛用的?

bszs 发表于 2021-9-28 12:51:53

2736946915 发表于 2021-9-28 11:46
鱼币是啥?干嘛用的?

{:10_256:}会员不需要鱼币,但是我问问题要悬赏{:10_256:}
页: 1 [2]
查看完整版本: 数组名与数组第一个元素地址还有数组的地址的区别