中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言中結構體的聲明、自引用、以及變量的定義和初始化

發布時間:2020-07-30 08:14:46 來源:網絡 閱讀:1474 作者:勿忘勛心 欄目:編程語言

1.結構體的聲明

首先呢,結構是一些值的集合,這些值稱為成員變量,結構的每個成員變量可以是不同類型的變量。

一般的聲明

struct  Book
{
        char name[100];    //書名
        float price;           //價格
}b1,b2;                       //全局變量

struct Book b3;            //全局變量   
//并且上面兩種表示方式是相同的意思

int main()
{
    struct Book b5;           //這里的變量叫做局部變量
        return 0;
}

特殊的聲明

struct
{
    int a;
    char b;
    float c;
    //此處未完全聲明變量,缺少了結構體標簽

    //這種叫做匿名結構體類型
}b;

struct 
{
    int a;
    char b;
    float c;

}*ps;//結構體的指針變量,用來存儲地址

!!但是 ps=&x;
這種寫法是不合法的,編譯器認為這兩種不同的寫法是兩個不同的類型。

2.結構體的自引用

此處,我們用一個例子來講述我們來表述一個數據結構鏈表中的節點

struct Node
{
    int data;
    struct Node*next;

};

int main()
{
    struct Node a = { 3, NULL };
    struct Node b = { 5, &a };
    printf("%d\n", b.data);
    printf("%p\n", b.next);
    system("pause");
    return 0;
}

c語言中結構體的聲明、自引用、以及變量的定義和初始化

下面的地址便是結構體中b指向的地址,即a的地址。


!!!很重要的一點,當結構體自引用的時候,不可寫成匿名結構體類型。

例題如下

typedef struct
{
    int  data;
    Node* next;

}Node;

在此處編譯會出現錯誤,是由于Node在末尾端才定義,但在結構體內部便已經被調用,這樣是非法的。

正確的寫法如下:

typedef struct  Node
{
    int  data;
    struct  Node* next;

}Node;

3.結構體變量的定義和初始化

簡單結構體的初始化

struct Point
{
    int x;
    int y;

};

int main()
{
    struct Point p2 = { 1, 2 };       //定義一個局部變量p2并且給其進行賦值
    printf("%d %d\n", p2.x, p2.y);
    system("pause");
    return 0;
}

結構體嵌套的初始化

struct Point
{
    int x;
    int y;
};
struct Node
{
    int data;
    struct Point p;
    struct Node* next;

};

int main()
{
    struct Node n1 = { 5, { 1, 2 }, NULL };
    struct Node n2 = { 8, { 3, 4 }, &n1 };
    printf("%d\n", n2.next->data);
    printf("%d %d\n", n2.next->p.x, n2.next->p.y);
    printf("%p\n", n2.next);

    system("pause");
    return 0;
}

c語言中結構體的聲明、自引用、以及變量的定義和初始化

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东港市| 泸溪县| 老河口市| 汶川县| 云霄县| 乌兰察布市| 吕梁市| 东兰县| 义乌市| 琼海市| 望谟县| 外汇| 驻马店市| 雷波县| 泽库县| 关岭| 广灵县| 福建省| 郴州市| 忻城县| 红河县| 雅安市| 城口县| 婺源县| 饶河县| 门源| 昭苏县| 师宗县| 若尔盖县| 永兴县| 绥中县| 蓝田县| 福安市| 偏关县| 贵州省| 长治市| 海口市| 西贡区| 桦川县| 当阳市| 商南县|