是否可以像這樣創建一個匿名陣列?
char **values = (*char[]){"aaa", "bbb", "ccc"};
此方法有效:
char **values
char *tmp[] = {"aaa", "bbb", "ccc"};
values = tmp;
uj5u.com熱心網友回復:
是的,您可以使用復合文字(它創建一個可以獲取其地址的匿名物件)來執行此操作。您只需要正確獲取該復合文字的型別(在您的情況下為char*[]),然后使用&運算子獲取其地址:
#include <stdio.h>
int main()
{
// The outer brackets on the RHS are not necessary but added for clarity...
char *(*values)[3] = &( (char* []) { "aaa", "bbb", "ccc" } );
for (int i = 0; i < 3; i) printf("%s\n", (*values)[i]);
return 0;
}
或者,您可以利用這樣一個事實,即陣列(即使是定義為復合文字的陣列)會自動“衰減”到指向其第一個元素的指標(在大多數情況下,包括用作賦值操作的 RHS 時):
int main()
{
char** values = (char* []){ "aaa", "bbb", "ccc" };
for (int i = 0; i < 3; i) printf("%s\n", values[i]);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537263.html
標籤:数组C指针铸件匿名数组
下一篇:在C中使用指標時,我總是出錯
