這隻伶俐的棕色狐狸跳過一隻懶惰的狗
阿新 • • 發佈:2018-12-13
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;
}