2012-11-09 51 views
3

我发现了类似的问题,但我不认为它们适用于我的具体问题,所以如果他们这么做,我很抱歉!警告 - 初始化使得整型指针没有强制转换

我正在学习C作为第一年的CS学生,并试图在C中进行测验,但我无法获得任何地方,因为每次我尝试编译以查看它是否正常工作,我都会收到消息“警告:初始化使得整型指针没有转换。“

我已经制定了所有的语法错误(我认为),但我只是为了我的生活无法弄清楚这一点。我已经浏览了所有的演讲幻灯片,但没有一本介绍。

#include <stdio.h> 
#include <scc110.h> 

int player1score, player2score; 
char* answer1, answer11, answer111, answer2, answer22, answer222; 

int geography() 
{ 
    printf ("The first category is geography. Note: Player 1 always goes first.\n"); 

    char* answer1 = AskForStringAndWait("Player 1: What is the capital of India?"); 
    if (strcmp(answer1,"New Delhi")==0) 
    player1score++; 

    char* answer2 = AskForStringAndWait("Player 2: What is the capital of Iran?"); 
    if (strcmp(answer2,"Tehran")==0) 
    player2score++; 

    char* answer11 = AskForStringAndWait("Player 1: Name a country that borders France that isn't Germany, Italy or Spain."); 
    if (strcmp(answer11,"Luzembourgh")==0 || 
     strcmp(answer11,"Switzerland")==0 || 
     strcmp(answer11,"Belgium")==0) 
    player1score++; 

    char* answer22 = AskForStringAndWait("Player 2: Name one of the main British Channel Islands."); 
    if (strcmp(answer22,"Guernsey")==0 || 
     strcmp(answer22,"Jersey")==0) 
    player2score++; 
} 
+1

您需要在使用它之前声明该函数。 – chris

+3

而在你的全局声明中,只有'answer1'是'char *',其他的都是普通的'char'。 –

+0

请注意,您的全局变量'answer1'等由局部变量映射到函数geography()中。这通常会导致混淆。在这种情况下,摆脱全局变量。 –

回答

0

您正在获取一个整数值并将其转换为指针。 AskForStringAndWait的源代码是什么?我相信你的函数返回一个字符,但是你将这个结果存储在一个字符指针(char *)中。另外,您应该注意,char answer11char * answer11不等同。尽管它们具有相同的名称,但其中一个是全局变量,另一个是函数内的局部变量。

0
char* answer1, answer11, answer111, answer2, answer22, answer222; 

在此声明answer1char*,其余的是只有char

但就我觉得你再次声明相同的全局变量里面

int geography() {} function 

所以,当你试图获取这些指针的值您可能会收到警告或错误

因此,声明像th是

char* answer1, *answer11, *answer111, *answer2, *answer22, *answer222;

而且内部功能answer1之前不要使用char *

只是使用这些变量

另外随着geography()返回类型是int但你的问题投入char*

2

你忘了声明AskForStringAndWait函数。

在现代C(过去C99),这将是一个错误,因为C99不允许调用未声明的函数。

在C89/90中,这不是错误。当调用未声明的函数时,假定它返回一个int值。所以,你的

char* answer1 = AskForStringAndWait("Player 1: What is the capital of India?"); 

被解释为企图初始化char *指针与int值。因此警告。

相关问题