繁体   English   中英

C++ 初始化数组指针

[英]C++ Initialize array pointer

如何初始化指向文字数组的指针?
我希望 *grid 指向新分配的 int 数组 {1, 2, 3}。

int *grid = new int[3];
*grid = {1, 2, 3};

谢谢你。

您不能以这种方式初始化动态分配的数组。 您也不能以这种方式分配给数组(动态或静态)。 该语法仅在初始化静态数组时有效,即

int a[4] = {2, 5, 6, 4};

我的意思是,即使以下内容也是非法的:

int a[4];
a = {1, 2, 3, 4}; //Error

在您的情况下,您只能手动复制每个元素的 velue

for (int i = 1; i<=size; ++i)
{
    grid[i-1] = i;
}

您可以通过使用 stl 算法来避免显式循环,但想法是相同的

其中一些在 C++0x 中可能已经合法,我不确定。

@above grid 指向存储数组 grid[] 的第一个元素的地址位置。 由于在 C++ 中数组存储在连续的内存位置,您可以通过增加网格并取消引用它来遍历数组。

但是调用 grid an (int*) 是不正确的。

我不确定这是否很明显,但您可以在一行中完成。

int *grid = new int[3] {1, 2, 3};

由于这是我们正在谈论的 C++,因此您也可以将其拆分为两个文件。 您的.h文件包含:

int *grid;

您的.cpp文件包含:

grid = new int[3] {1, 2, 3};

使用以下代码,grid 是一个指针,grid[] 是该指针的一个元素。

int grid[] = {1 , 2 , 3};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM