我正在通過初始化程序列表將一個3D數組賦值給一個結構體,以利用成員級複製。我感興趣的是做這樣的事情發生了什麼描述in this post about array copying爲什麼在C++ 3d數組列表分配中需要額外支架?
這似乎是工作,但不能沒有增加額外的一套支架來完成:
struct Options
{
char array [20][20][20];
};
int main(void)
{
Options K = {{ { "-x", "-o" }, { "-y", "-p", "-q" }, {"-r", "-s"} }};
};
最外面的括號是封裝值被分配。下一對是我無法解釋的額外配對。的3個維度被分配有:
- X =數串的括號內的基團的
- Y =串的每個組中的數
- Z =字符的每個字符串數
這通常不會擔心我,因爲一切都被複制了。但是,賦值之後,應該在內存中連續的最內層值將被多個額外維度間隔開。例如,用「20」字節分隔「-x」和「-o」,實際上它們分隔20 * 20字節。我很困惑。如何在不添加額外維度的情況下實現這一目標?
什麼「似乎有效,但無法完成」是什麼意思? – juanchopanza
什麼?!*你*是一個要求'[20] [20] [20]'如果你只想要''[3] [3] [3]',你可以改變你的結構。 –
「-x」不能存儲在字符中。你實際上需要'char * array [3] [3] [3];'或者''x''用'char'。 – HelloWorld