C 初始化从指针生成整数

标签 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};


}

错误:

warning: initialization makes integer from pointer without a cast [enabled by default]

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

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

最佳答案

您正在尝试使用指针初始化数组。这尝试将指针转换为 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作为一个相当强大的标志设置来捕获这些。

关于C 初始化从指针生成整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44048396/

相关文章:

c - 如何计算字符串中回文单词的数量?

c - 在 C 中初始化一个结构

c - MPI_Send 和 MPI_Recv 开销

c - c中的win32线程

c - ELF 文件中的程序头和节头

c - 套接字编程——connect()中参数的含义

c - 结构声明

c++ - 细粒度锁定

c - 数组的最后一个元素中的通用指针访问冲突

c - printf中的 “%.#s”是什么意思?