1. 程式人生 > >這隻伶俐的棕色狐狸跳過一隻懶惰的狗

這隻伶俐的棕色狐狸跳過一隻懶惰的狗

1.struct單獨使用

struct結構體型別,定義變數時類比於int,char…

#include<stdio.h>

int a;     // 普通變數的定義

struct Student{  // 定義一個結構體
    char s;
    int a;
};

struct Student s;  // 定義一個結構體變數


int main(){


    return 0;
}

注意變數定義的時候不能直接用Student,因為Student只是這個結構體區別於其他結構體的名字,不能用來定義變數;真正用來定義結構體的還是struct關鍵詞。

2.typedef單獨使用

typedef相當於給現在的關鍵詞起一個別名。接下來這個別名的作用就相當於原來的關鍵詞了。

#include<stdio.h>

int a;     // 普通變數的定義
typedef int iint;  // 給int起一個別名
iint b = 6;  // 用這個別用定義變數,和int的效果一樣

3.typedef和struct連用

在struct用法中我們提到struct Student合起來才能定義變數,所以我們給他用typedef進行重新命名。


typedef struct Student{  // 定義一個結構體
    char s;
    int a;
}Stu;   // 吧struct Student重新命名為Stu

Stu ss;  // 用Stu定義變數,和下面效果一樣

struct Student s;  // 定義一個結構體變數

既然我們可以用一個單詞代替兩個單詞,那麼之前的定義方式就用不著了,也就是說我們可以用別名區分每個struct了,那麼之前的名字Student就沒必要了,於是有了這種簡單的寫法。

typedef struct{  // 定義一個結構體
    char s;
    int a;
}Stu;   // 吧struct Student重新命名為Stu

Stu ss;  // 用Stu定義變數,和下面效果一樣

4.資料結構中經常用的struct

在資料結構中用的比較多,舉幾個栗子。

順序表:

#include<iostream>
using namespace std;

#define MaxSize 50

typedef struct{
    int data[MaxSize];
    int length;
}SqList;

int main(){
    SqList L;
    L.length = 1;
    L.data[0] = 10;

    return 0;
}

單鏈表

#include<iostream>
using namespace std;

typedef struct Node{
    int data;
    Node *next;
}Node, *LinkList;

int main(){
    LinkList L = new Node;
    Node node;
    node.data = 10;
    node.next = NULL;
    L->next = &node;
    cout<<node.data<<endl;
    cout<<L->next->data<<endl;
    return 0;
}