可能重复:
assignment makes pointer from integer without a cast
assignment makes pointer from integer without a cast
我正在学习C并且有点挣扎。我正在编写一个程序,循环遍历一系列问题并填充一系列答案。我一直收到以下警告:
/var/Cprograms/quiz.c|24|warning: assignment makes pointer from integer without a cast [enabled by default]|
我仍然试图掌握指针的使用,我可能完全错误地使用它们,但这就是我在这里学习的原因。因此,我需要帮助确定我在第24行上做错了什么才能让程序正常工作并最终让它打印出答案。这是迄今为止的代码
#include <stdio.h>
/*
Yes or no Question Quiz:
get answers from command prompt
and print answers at end of session
using pointers
*/
/* char *gets(char *s) */
void loopQuiz (void)
{
char *questions[] = {"Is true == true?", "Is 0 == 1?", "Does water have atleast 3 phases?", "Is C a programming language?"};
char *answers[3];
int i = 0;
int count = sizeof(questions) / sizeof(int);
do
{
printf("%s \n", questions[i]);
answers[i] = getchar();
i++;
}
while (i < count);
/*print function to go here*/
}
int main (void)
{
loopQuiz();
return 0;
}
答案 0 :(得分:3)
char *answers[3];
answers
是一个指向char的3指针数组。
answers[i] = getchar();
尝试将int分配给answers[i]
。你的类型错了。 getchar
会将unsigned char
转换为int(除非您点击EOF
),所以您想要的是......
char answers[3];
答案 1 :(得分:2)
(你欠我一笔捐款,直到你的代码中的第24行......)
问题在于这一行:
answers[i] = getchar();
由于answers
是char *
的数组,但是您为其中一个成员分配了int
(返回值getchar()
),这是一个无效的分配。我不明白你期望做什么,但这肯定是错的。您需要将char *
分配给answers[i]
。
答案 2 :(得分:1)
answers[i] = getchar();
getchar()
会返回int
,但
char *answers[3];
answers
被声明为一个指针数组,因此您可以在不进行转换的情况下为指针指定一个整数,就像错误消息所示。