c语言,书上有一点不懂,求解答

img


我的思路是:typedef定义了一个结构体,lnode和*linklist分别为定义的结构体变量和结构体指针,inode x,就是定义一个结构体变量x,linklist x 便是定义一个结构体指针x,我不知道我的理解对不对,求解答

LNode a; // 定义一个结构体变量
LinkList b; // 定义一个结构体指针
这两个的区别在于类型不同。
a 占用的内存空间 理论讲 应该是 32+32 字节,第一个32是int型数据占用的空间,第二个32是指针型数据占用的空间,两者加起来就是结构体占用的内存空间。(64位的程序,指针变量应该占64字节)
b 是指针型数据,占用32字节的内存空间。
如果想要 b 指向 a 这个结构体变量,可以使用 b = &a ; 语句进行赋值。

定义一个类型,定义一个变量,定义一个函数,这三者有着不同的概念,一定要弄清楚。

  • 定义一个类型,不分配空间,只是告诉编译器,有这么一个类型,编译器可以计算出这个类型占用的空间大小。
  • 定义一个变量,就会分配内存空间,(同时也可以进行初始化赋值)。
  • 定义一个函数,除了声明函数的返回值、名称、参数列表之外,还需要实现方法体。