【问题标题】:assignment makes integer from pointer without a cast (C language.)赋值从没有强制转换的指针生成整数(C 语言。)
【发布时间】:2018-04-10 20:39:17
【问题描述】:

您好,我收到此错误:'assignment make integer from pointer without a cast'

我所做的是将来自不同类型数组的许多值放入一个指针数组中。结果,我在将整数分配给我的 char 指针数组的代码上收到了这个警告。

这是我的代码:

int id[10] = {120, 121, 122, 123,124,125, 126, 127, 128,129 };
char *from[5] = {"value1", "value2", "value3", "value4", "value5" };
char *to[5] = {"value1", "value2", "value3", "value4", "value5" };
int date[5][3] = {{10,6,2018},{15,6,2018},{20,6,2018},{1,7,2018},{15,7,2018}};


char *flight[30];
int i = 2;


        int counter = 0;
        flight[0]="Flight ID:";
        flight[1]=  id[i]; //warning in this line.

        flight[2]=" From:";
        flight[3]=from[i];

        flight[4]=" to:";
        flight[5]=to[i];

        flight[6]=" Depart on:";
        flight[7]=date[i][0];//warning in this line.
        flight[8]="/";          
        flight[9]=date[i][1];   //warning in this line.
        flight[10]="/";                 
        flight[11]=date[i][2];  //warning in this line.     

【问题讨论】:

  • 仅供参考,您并没有更新 counter 的值,所以您只是一遍又一遍地替换了 flight[1] 的值
  • 您尝试将值从日期复制到航班的任何地方,您都在尝试将 int 复制到 char*。你想做什么?
  • 你正在用整数分配指针
  • 这段代码真正应该做什么? id[i]int 122,flight[counter+1]char*。为什么要将 122 分配给指针?
  • 你想用这段代码完成什么?具体来说,您(正确地)被警告的行?

标签: c arrays pointers char


【解决方案1】:

您收到警告是因为您尝试将 int 值分配给 char *。这些类型彼此不兼容。

您应该将flight 设置为一个结构数组,而不是char * 的数组,该数组将包含其中的各种数据:

struct flight {
    int id;
    char *from;
    char *to;
    int departMon;
    int departDay;
    int departYear;
};

struct flight flight[30];

...

    flight[counter].id = id[i];
    flight[counter].from = from[i];
    flight[counter].to = to[i];
    flight[counter].departMon=date[i][0];
    flight[counter].departDay=date[i][1];
    flight[counter].departYear=date[i][2];
    counter++;

【讨论】:

  • 你说得对,我觉得 struct 更舒服。但是在这个问题中,我仅限于数组。
  • @AL3MS 你指的是什么问题?
  • 将 id 和其他 int 的值以及 from 和 to 值存储到一个位置。所以我可以稍后检索信息。仅允许 if、case、循环、数组和字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2016-05-29
相关资源
最近更新 更多