我的结构如下,
struct myStruct
{
CString a;
int b;
CString c;
int d;
}
char **数组可以初始化如下,
char **choices = (char *[]){ "New Game", "Continue Game", "Exit" };
同样如何初始化双指针结构数组。我的要求是我不应该使用new或malloc进行动态内存分配。
我需要进行以下初始化。
myStruct** arr ={
....
....
....
....
};
答案 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;在此之前不推荐转换)。