如何在C ++中初始化双指针结构数组?

时间:2018-03-26 13:30:42

标签: c++

我的结构如下,

struct myStruct
{
CString a;
int b;
CString c;
int d;
}

char **数组可以初始化如下,

char **choices = (char *[]){ "New Game", "Continue Game", "Exit" };

同样如何初始化双指针结构数组。我的要求是我不应该使用new或malloc进行动态内存分配。

我需要进行以下初始化。

myStruct** arr ={
....
....
....
....
};

1 个答案:

答案 0 :(得分:4)

首先创建一些myStruct个对象:

myStruct ms1;
myStruct ms2;

然后创建一个指向myStruct的指针数组:

myStruct* pointerArray[] = {&ms1, &ms2};

最后,您可以将指针指向该数组的第一个元素。这是没有动态分配的“双指针结构数组”。

myStruct** arr = pointerArray;
char **choices = (char *[]){ "New Game", "Continue Game", "Exit" };

这条线有一些问题。

首先,您使用的初始化语法在C ++中是不正确的。复合文字是C99功能,不是C ++语言。

其次,将字符串文字转换为非const char* 。字符串文字在C ++中是const,并且从const到非const的这种转换是不正确的(因为C ++ 11;在此之前不推荐转换)。