c++ - 将多维数组的地址复制到指针时的指针维度

标签 c++ c pointers multidimensional-array

当我们有一个多维数组,我们希望用一个指针来指向它的地址。在一本书中,它说我们将按照以下方式进行。

#include <stdio.h>
int main(){
    int a[3][4][5];
    int *p[5];
    p = a;
    return 0;
}

现在,我对以下几点感到很困惑:

  1. 当我在 CLion 中键入代码时,它会发出警告:Incompatible pointer types 'int[5] *' and 'int[3][4][5]',为什么那个?
  2. 为什么指针数组*p包含5个变量而不是3个变量?
  3. 如何使用这个指针*p

谢谢。

最佳答案

1) 因为……它们是不同的指针类型! ;) 具体来说,a 是一个三维整数数组,而 p 是一个一维整数指针数组。了解? a 包含整数,p 包含指向整数的指针。

2) 因为 int *p[5]; 行声明它的长度为 5。在 C 中,您通过 [] 中的数字定义数组的大小。

3) 嗯,如果你想让 p 指向 a 你需要让它的一部分指向 a,例如 p[0] = a;

关于c++ - 将多维数组的地址复制到指针时的指针维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34057186/

相关文章:

c - 手动单步执行 C 中的结构

c++ - 自定义预编译头导致编译错误

c - 类似于旧 glibc 版本的 getifaddrs

visual studio c 中每个函数的自定义序言

c - 如何更多地调查一些给出系统错误 :exec format error in AIX 的 .so 文件

c - 带指针和不带指针的 C 中的字符串复制

c - 我的程序将第一个数组元素设置为 NUM_EL 而不是随机数,但其余元素随机生成

android - 使用 C++ 创建 UDP 服务器以嵌入跨平台 iOS 和 Android 应用程序

c++ - 使用多线程时程序变慢

c++ - 为什么 make_unique to vector::back() 创建另一个拷贝?