2013-08-26 111 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

它不是一个类型转换,它是一个复合文字。 –