指向二维数组的指针

Pointer to a 2 D Array

本文关键字:指针 二维数组      更新时间:2023-10-16

假设我有一个 2 D 数组 int m[3][4]如果类型定义为

typedef int array[4];
array *ptr = m;

这是什么意思?它是指向 4 个元素数组的指针吗?还是 4 个指针的数组?

当我们cout << ptr or cout << *ptr时,它会打印相同的地址。这怎么可能?

ptr 是指向 int 类型的四个元素的数组的

指针。 m 是 3 个类型元素的数组(int 类型的四个元素的数组)。给你一张图片 - m 是一个由 3 个数组类型的元素组成的数组。这就是 ptr 初始化为 m 的原因 - 没有问题,因为作为数组的"m"隐式转换为指向该数组中第一个元素的指针。

PTR 是指向元素数组的指针。以便打印该指针。当使用 *ptr 时 - 你会得到一个数组,它再次隐式转换为指向数组第一个元素的指针,这又是相同的起点 - 所以你得到相同的值。

由于一切都从同一点开始,因此您将获得相同的值。当一个人在指针上做++时,事情会开始区分。我就把这个留给你了。

查看顺时针/螺旋规则。阅读本文后,您可以将声明读作指向类型别名array的指针,换句话说,指向四个整数数组的指针。

根据"顺时针/螺旋规则",ptr 是指向 4 int 数组的指针。