c - 类型转换指向结构的指针时出错

标签 c pointers struct

struct ll
{
    int data;
    struct ll *next;
};

struct ll *ptr,*root;
root = (struct ll *)malloc(sizeof(struct ll)); /* This line */

if(root == NULL)
{
    printf("FAILURE");
    exit(0);
}


root = NULL;
ptr = NULL;

上面的代码用于声明和初始化指向结构ll 的指针,它是一个链表。 粗体显示的行在编译期间显示以下警告: 数据定义没有类型或存储类[默认启用]****, 在“root”的声明中类型默认为“int”

最佳答案

在 C 的任何函数之外都不允许有语句(声明除外)。 由于您没有为 root 指定类型 , 错误消息说 root 的类型默认为 int .显然这不是我们想要的。

将您的代码放入函数中(例如 main())并编译。

此外,

1) 不要转换 malloc() 的结果因为它是useless and error-prone.
2)在分配 malloc() 时,您丢失了分配的指针(带 NULL )之后立马。但我不确定你打算用它做什么。
3) 包括您使用的库函数的 header (<stdlib.h> 用于 mallocexit)

关于c - 类型转换指向结构的指针时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829221/

相关文章:

c++ - 将缓冲区复制到结构时丢失数据

c++ - 如果试图关闭一个已经关闭的套接字 winsock 会发生什么?

return 语句中的比较

我可以返回指向 VLA 的指针吗?

c++ - nullptr、{} 和 nullopt 之间的区别

c - 传递链接列表的指针

c++ - 跨平台,具有异步能力的 C/C++ HTTP 库

c - 在函数之间使用指针时出现段错误

无法从 Fortran 90 中返回的 C 浮点指针获取数据

c - 访问结构内 union 中的变量