C error: taking address of temporary array
C error: taking address of temporary array
我正在将二维 char 数组 作为复合文字传递到方法中,但收到错误消息:
error: taking address of temporary array
这与变量在方法声明中声明的方式有任何关系还是其他原因?
void printConcatLine(char chunks[][20]) { }
printConcatLine((char*[]){ "{", "255", "}" });
"I am passing a two-dimensional char array" --> No.代码传递的是char *
.
的地址
传递匹配类型
// printConcatLine((char*[]){ "{", "255", "}" });
printConcatLine((char[][20]){ "{", "255", "}" });
I am passing a two-dimensional char array
不,您正在将指针传递给 char *
个指针数组。
正确版本:
void printConcatLine(char *chunks[])
{
while(*chunks)
{
printf("%s", *chunks++);
}
printf("\n");
}
int main(void)
{
printConcatLine((char*[]){ "{", "255", "}", NULL });
}
或
void printConcatLine(char chunks[][20])
{
for(size_t index = 0; strlen(chunks[index]);index++)
{
printf("%s", chunks[index]);
}
printf("\n");
}
int main(void)
{
printConcatLine((char[][20]){ "{", "255", "}", "" });
}
在这两种情况下,您都需要传递数组的 pointers/length 编号或以某种方式终止它(如我的示例所示)。 C 没有任何机制来检索传递的数组的长度。
我正在将二维 char 数组 作为复合文字传递到方法中,但收到错误消息:
error: taking address of temporary array
这与变量在方法声明中声明的方式有任何关系还是其他原因?
void printConcatLine(char chunks[][20]) { }
printConcatLine((char*[]){ "{", "255", "}" });
"I am passing a two-dimensional char array" --> No.代码传递的是char *
.
传递匹配类型
// printConcatLine((char*[]){ "{", "255", "}" });
printConcatLine((char[][20]){ "{", "255", "}" });
I am passing a two-dimensional char array
不,您正在将指针传递给 char *
个指针数组。
正确版本:
void printConcatLine(char *chunks[])
{
while(*chunks)
{
printf("%s", *chunks++);
}
printf("\n");
}
int main(void)
{
printConcatLine((char*[]){ "{", "255", "}", NULL });
}
或
void printConcatLine(char chunks[][20])
{
for(size_t index = 0; strlen(chunks[index]);index++)
{
printf("%s", chunks[index]);
}
printf("\n");
}
int main(void)
{
printConcatLine((char[][20]){ "{", "255", "}", "" });
}
在这两种情况下,您都需要传递数组的 pointers/length 编号或以某种方式终止它(如我的示例所示)。 C 没有任何机制来检索传递的数组的长度。