如何在不使用向量的情况下创建指针数组

zLe*_*eon -2 c++ arrays pointers vector

我看到可以使用vector创建一个指针数组,但是,我不希望这样.下面的示例是一种创建指向int数组的指针的方法吗?

#include <iostream>
using namespace std;

int main() {
    int* arr[4];
    for (int i=0; i<4; ++i) {
        cout<<endl<<arr[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

这将生成一个指向int数组的指针,并显示数组中每个索引的内存地址.现在我几乎没有问题.它是一种在没有向量的情况下创建指向int数组的指针的正确方法吗?另外,如果我想在给定示例中初始化每个内存地址中的值,它是如何完成的?最后为什么&arr等于arr

Som*_*ude 5

虽然&arr而且很简单arr可能都会给你相同的地址,但它们都是非常不同的.

随着&arr你得到一个指针数组,它的类型是(你的情况)int* (*)[4].

当你使用arr它时衰减到指向第一个元素的指针,类型是(再次,在你的情况下)int**.

相同的地址,但不同的类型.


至于数组本身,它的定义很好,你有一个四个指针的数组int.但是,您没有初始化数组的内容,这意味着内容是不确定的,并且以任何方式使用这些指针(甚至只是打印它们)会导致未定义的行为.