[英]Only compiles as an array of pointers, not array of arrays
假設我定義了兩個數組,每個數組都有2個元素(用於理論目的):
char const *arr1[] = { "i", "j" };
char const *arr2[] = { "m", "n" };
有沒有辦法定義一個包含這兩個數組作為元素的多維數組? 我在考慮以下內容,但我的編譯器顯示有關不兼容類型的警告:
char const *combine[][2] = { arr1, arr2 };
它編譯的唯一方法是讓編譯器將數組視為指針:
char const *const *combine[] = { arr1, arr2 };
這真的是唯一的方法嗎?或者我可以以某種方式保留類型(在C ++中,運行時類型信息會知道它是一個數組)並將combine
視為多維數組? 我意識到它的工作原理是因為數組名稱是一個const指針,但我只是想知道是否有辦法在標准C / C ++中做我所要求的而不是依賴於編譯器擴展。 也許我已經習慣了Python的列表,我可以在其中拋出任何東西......
不,首先,這個
char const *combine[][2] = { arr1, arr2 };
無法工作,因為arr1
和arr2
不能用於初始化數組。 但是這個:
char const *arr1[] = { "i", "j" };
char const *arr2[] = { "m", "n" };
char const *(*combine[])[2] = { &arr1, &arr2 };
同樣有效
char const *arr1[] = { "i", "j" };
char const *arr2[] = { "m", "n" };
char const *combine[][2] = { {"i", "j"}, {"m", "n"} };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.