亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

改则县| 永福县| 哈巴河县| 鄂托克前旗| 霍邱县| 浠水县| 沐川县| 宜都市| 进贤县| 利辛县| 舒城县| 平乡县| 库尔勒市| 图木舒克市| 建德市| 曲麻莱县| 城口县| 垣曲县| 泰安市| 卢龙县| 山东省| 宜宾县| 黔东| 保康县| 大邑县| 潼南县| 喜德县| 太原市| 高尔夫| 游戏| 宜兰市| 蓝田县| 陕西省| 绵阳市| 毕节市| 浪卡子县| 湖南省| 新民市| 贡山| 宁都县| 米脂县|