链表基础:结构体变量和结构体指针
#include <stdio.h>
#include <malloc.h>
typedef struct node {
struct node*next;
int data;
}node;
int main()
{
node*head;
head = (node*)malloc(sizeof(node)); //指针动态申请一块内存,指向大小为sizeof(node)的内存空间
head->data = 3; //变量初始化
head->next = NULL;
printf("%d\n", head->data);
printf("指针为%d个字节\n",sizeof(head)); //虽然指向的结构体大小是八字节,但指针是四个字节。
node a; //声明一个结构体类型的变量
a.data=1; //初始化结构体变量
a.next=NULL; //结构中的next指针不指向任何内存
printf("该结构体为%d个字节\n",sizeof(a)); //结构体内存为八个字节(4(int)+4(指针)=8字节)
free(head); //(动态申请的空间需要手动释放)释放head指向的内存,将内存数据清除
head = NULL; //head指针为NULL,不再指向这一块内存。
return 0;
}
注:不管指针指向哪种类型变量,指针本身存储所需要的空间大小依然是4字节。