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

时间:2014-11-09 14:26:16

标签: 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 的指针,这是一个链表。 以粗体显示的行在编译期间显示以下警告: 数据定义没有类型或存储类[默认启用] ****, 类型默认为' int'声明' root'

1 个答案:

答案 0 :(得分:2)

在C中的任何函数之外,不允许使用语句(声明除外)。 由于您尚未为root指定类型,因此错误消息显示root的类型默认为int。显然这不是想要的。

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

此外,

1)不要将malloc()的结果视为useless and error-prone. 2)您正在丢失分配的指针(使用malloc()),因为您之后立即分配NULL。但我不确定你打算用它做什么 3)包含您使用的库函数的标题(<stdlib.h>malloc {/ 1}}