一、結構是什麼?
結構體是一種可以儲存多個資料的集合,像陣列一樣,你可以把多個資料儲存到乙個變數裡,但與陣列不同的是,結構體中的成員(和陣列元素一樣,在結構體中我們稱之為成員)可以是不同型別的。
結構體和陣列比較:
1、陣列中所有元素的型別相同,但結構體允許不同;
2、陣列通過 陣列名[下標]或者指標來訪問其中的元素,但結構體通過成員名來訪問其成員;
3、陣列中有幾個元素就給它分配幾個元素大小的空間,但結構體分配的空間大小並不是所有成員大小之和。
二、宣告
struct tag
member-list;
}variable-list;
如上是結構體宣告的基本格式,其中tag、member-list、variable-list至少要出現兩個。
下面有幾個例子:
struct
x;
這個宣告建立了乙個叫x變數,它含有三個成員;
struct
y,*p;
這個宣告建立了乙個結構體指標,但是注意,雖然上面兩個結構體具有完全相同的成員,但是它們卻是兩種截然不同的型別,所以下面這條語句是錯誤的:
p = &x;
但是下面這個確實正確的,因為它們是同一種型別:
p = &y;
這是否意味著每次建立乙個結構體型別的變數時都需要使用乙個單獨的宣告呢?並非如此。tag允許我們直接建立結構體變數:
struct a
;
如上我們沒有建立任何變數,但是它允許我們在下文建立變數,你可以這樣使用它:
struct a x;
這裡我們建立了乙個x變數;
有時你會覺得使用struct a有點麻煩,這裡有個小技巧:
typedef struct a
******;
使用typedef關鍵字可以給該結構體起乙個新的名字,所以你就可以這樣使用它了:
****** y;
****** *p;
****** z;
上面分別建立了乙個結構體變數y、指向結構體的指標p、結構體陣列(它的每個元素都是乙個結構體)。
還有一些關於結構體更複雜的用法,將在後面的博文中討論。
成於堅持,敗於止步!
結構體基礎
什麼是結構體?簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別 而結構...
結構體基礎
結構體,結合程式看好多了。程式直接網上ctlr c來的 還有 和 的區別 include include 結構體 int main student struct student pstruct pstruct student 指向student結構體變數 printf the sudent s in...
結構體基礎
1 結構體本質相當於,自己定義了乙個資料型別,資料型別的本質是固定大小記憶體塊的別名。2 c和.cpp對結構體型別定義變數的編譯處理行為不一樣。在.c中少struct不可以。3 結構體型別typedef 4 結構體變數記憶體按照四位元組存放 5 結構體中巢狀的指標要使用,需要給指標進行賦值或者mal...