今天用C语言写了Leetcode707设计链表题,发现自己对C语言中结构的声明以及malloc的使用不是很熟悉。
题目中给出了这样一个结构体:
typedef struct { int val; //value field struct MyLinkedList *next; //next field of linked list, 声明一个结构类型的指针 } MyLinkedList;
这时候c语言声明该结构的实体的语法如下:
struct MyLinkedList *head; //struct是声明结构体类型时必须使用的关键字,不能省略,它向编译系统声明这是一个结构体类型
C语言在heap中new一个对象的语法如下:
MyLinkedList *head = (MyLinkedList*) malloc(sizeof(MyLinkedList)); //注意sizeof里面的参数是一个size_t类型的而不是head这个实体对象 //最好在malloc前加一个类型转换的标志(MyLinkedList*)声明该对象的数据类型 //这里不需要加struct关键字