簡體   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