C初始化从指针生成整数

时间:2017-05-18 12:55:53

标签: c

#include <stdio.h>

void add_element(char object[20], int price);

struct linked_list {
    char object[20];
    int price;
    struct shopping_list *next;
};

struct linked_list list = {"car", 15000, NULL};
struct linked_list *last = &list;

int main() {
    add_element("snake", 340);
    printf("%s", list.object);
    return 0;
}

void add_element(char object[20], int price) {
    struct linked_list new_element = {object, price, NULL};


}

ERROR:

  

警告:初始化从指针生成整数而没有强制转换[默认启用]

struct linked_list new_element = {object, price, NULL};

如果我直接将“snake”传递给struct linked_list new_element它可以工作,但传递对象则不行。

1 个答案:

答案 0 :(得分:4)

您正尝试使用指针初始化数组。这会尝试将指针转换为char并使用它初始化第一个元素,因此错误 1

此片段应如下所示:

struct linked_list new_element = { .price = price };
memcpy(new_element.object, object, sizeof new_element.object);

1-这应该是一个错误,但似乎只是因为非标准扩展而产生警告。 GCC和Clang都接受-Wall -Wextra -Wfatal-errors -pedantic-errors作为一个相当强大的标志来捕捉这些。