鏈表基礎:結構體變量和結構體指針

#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;
}

node

注:無論指針指向哪一種類型變量,指針自己存儲所須要的空間大小依然是4字節。指針

相關文章
相關標籤/搜索