C ++初始化数组指针

时间:2011-06-17 13:18:46

标签: c++ arrays pointers

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

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

4 个答案:

答案 0 :(得分:10)

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

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

我的意思是即使以下情况也是非法的:

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

在你的情况下,除了手工复制每个元素的含义外,你什么都不做

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

int *grid;

您的.cpp文件包含:

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

答案 3 :(得分:-5)

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

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