【发布时间】:2019-09-20 09:24:04
【问题描述】:
我正在编写一个游戏,我必须将一个单词存储在一个数组中,然后函数返回该单词。
在我的例子中,单词是“control”,数组名是mot_generer,函数名是initialisation_mot_a_trouver。
我尝试使用代码返回mot_generer,但我的错误代码如下:
jeu_pendu.c:在函数“initialisation_mot_a_trouver”中: jeu_pendu.c:82:10:警告:return 从指针中生成整数而无需强制转换 [-Wint-conversion] 返回 mot_generer;
char initialisation_mot_a_trouver(){
char mot_generer[]="controle";
return mot_generer;
}
【问题讨论】:
-
你不能,因为字符串是一个局部变量,当函数返回时不再存在。使用
malloc。 -
此外,该函数返回一个字符,但您返回一个字符数组。声明为
char *init.. -
我认为这个问题已经解决了here
-
如果您实际上有一个由字符串常量初始化的数组,您可以将局部变量设置为静态变量。这是答案中提到的另一种方法,它告诉您返回一个必须是
free()ed 的堆对象。您可以更改函数签名以返回const char*,然后返回static char mot_generer[] = "initialized-with-a-compile-time-defined-string";
标签: c arrays scope c-strings lifetime