链表基础:结构体变量和结构体指针

#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字节。

 

posted @ 2019-10-27 22:12  三行代码划江湖  阅读(1164)  评论(0编辑  收藏  举报