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


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM