Ste*_*611 2 c arrays parameters arguments function-call
让我们考虑这两个函数:
void my_foo1(char ** my_par, int size) {
for (int i=0; i<size; i++) printf("%s \n",my_par[i]);
}
void my_foo2(int * my_par, int size) {
for (int i=0; i<size; i++) printf("%d \n",my_par[i]);
}
Run Code Online (Sandbox Code Playgroud)
为了调用它们,需要声明并初始化变量。之后,使用这些变量在第二行调用函数。
char * (my_strs[3])={"hello","world","!!!!"};
my_foo1(my_strs,3);
int my_ints[3]={1,2,3};
my_foo2(my_ints,3);
Run Code Online (Sandbox Code Playgroud)
是否可以写这样的东西:
my_foox(????,3)
Run Code Online (Sandbox Code Playgroud)
并避免变量声明?
dbu*_*ush 10
看起来您正在寻找的是复合文字:
my_foo1((char *[]){"hello","world","!!!!"},3);
my_foo2((int []){1,2,3},3);
Run Code Online (Sandbox Code Playgroud)
请注意,此类文字具有其封闭范围的生命周期。