2013-08-26 50 views
1

如何將char*數組作爲參數傳遞,而不創建並初始化它?傳遞char指針數組作爲參數

此代碼(創建初始化一個):

char *messages[] = {"Zero", "One", "Two", "Three"}; 
printf("%s", messages[1]); 

但是,如果你通過它像這樣它不會工作:

#include <stdio.h> 

void printElement1(char *messages[]) { 
    printf("%s", messages[1]); 
} 

int main(void) { 

    printElement1({"Zero", "One", "Two", "Three"}); 

    return 1; 
} 

我不能使用va_list,該函數採用char*數組就是這樣。

回答

6

你只是缺少你的複合文字的類型。將該行更改爲:

printElement1((char *[]){"Zero", "One", "Two", "Three"}); 

它會正常工作。

+0

哇!這太不可思議了,我不知道你可以像這樣打字。 – Jimmay

+1

它不是一個類型轉換,它是一個複合文字。 –