Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 警告-初始化从整数生成指针而不使用强制转换_C_Compiler Warnings - Fatal编程技术网

C 警告-初始化从整数生成指针而不使用强制转换

C 警告-初始化从整数生成指针而不使用强制转换,c,compiler-warnings,C,Compiler Warnings,我发现了类似的问题,但我不认为它们适用于我的具体问题,所以如果它们适用,我很抱歉 作为一名CS一年级的学生,我正在学习C语言,并试图用C语言做一个测试,但我什么也做不到,因为每次我尝试编译以查看它是否工作时,我都会收到一条消息“警告:初始化从整数生成指针而不进行强制转换。” 我已经解决了所有的语法错误(我想),但我一辈子都无法解决这个问题。我已经看完了我所有的演讲幻灯片,但没有一张涉及到这一点 #include <stdio.h> #include <scc110.h>

我发现了类似的问题,但我不认为它们适用于我的具体问题,所以如果它们适用,我很抱歉

作为一名CS一年级的学生,我正在学习C语言,并试图用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++;
}
#包括
#包括
int player1score、player2score;
char*answer1、answer11、answer111、answer2、answer22、answer222;
国际地理()
{
printf(“第一类是地理。注意:玩家1总是第一个。\n”);
char*answer1=AskForStringAndWait(“玩家1:印度的首都是什么?”);
如果(strcmp(回答1,“新德里”)==0)
player1score++;
char*answer2=AskForStringAndWait(“玩家2:伊朗的首都是什么?”);
如果(strcmp(回答2,“德黑兰”)==0)
player2score++;
char*answer11=AskForStringAndWait(“玩家1:说出一个与法国接壤的国家,而不是德国、意大利或西班牙”);
如果(strcmp(回答11,“卢森堡”)==0||
strcmp(回答11,“瑞士”)==0||
strcmp(回答11,“比利时”)==0
player1score++;
char*answer22=AskForStringAndWait(“玩家2:说出英吉利海峡的一个主要岛屿”);
如果(strcmp(回答22,“根西岛”)==0||
strcmp(回答22,“泽西”)==0
player2score++;
}

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

char* answer1, answer11, answer111, answer2, answer22, answer222;
在这个声明中,
answer1
char*
,而其他的只是
char
类型

但据我所知,你已经在

int geography() {}  function
因此,当您试图获取这些指针的值时,可能会收到警告或错误

那么就这样宣布吧

char*answer1、*answer11、*answer111、*answer2、*answer22、*answer222

内部函数在回答问题之前不要使用
char*
,等等

只需使用这些变量


还有
geography()
的返回类型的问题,它是
int
,但是您正在将
char*
放入
askforstringwait
函数中

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

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

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

被解释为试图用
int
值初始化
char*
指针。因此出现警告。

在使用函数之前需要声明函数。在全局声明中,只有
answer1
char*
,其他都是纯
char
。请注意,全局变量
answer1
等被局部变量隐藏在函数
geography()
中。这常常导致混乱。在这种情况下,去掉全局变量。