戰30天C 入門極限 C C 中的結構體(1)

2021-04-06 16:42:13 字數 879 閱讀 9880

什麼是結構體?

簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別(而結構體是),陣列名稱是常量指標,所以不可以做為左值進行運算,所以陣列之間就不能通過陣列名稱相互複製了,即使資料型別和陣列大小完全相同。

定義結構體使用struct修飾符,例如:

struct test

; 上面的**就定義了乙個名為test的結構體,它的資料型別就是test,它包含兩個成員a和b,成員a的資料型別為浮點型,成員b的資料型別為整型。

由於結構體本身就是自定義的資料型別,定義結構體變數的方法和定義普通變數的方法一樣。

test pn1;

這樣就定義了一test結構體資料型別的結構體變數pn1,結構體成員的訪問通過點操作符進行,pn1.a=10 就對結構體變數pn1的成員a進行了賦值操作。

注意:結構體生命的時候本身不占用任何記憶體空間,只有當你用你定義的結構體型別定義結構體變數的時候計算機才會分配記憶體。

結構體,同樣是可以定義指標的,那麼結構體指標就叫做結構指標。

結構指標通過->符號來訪問成員,下面我們就以上所說的看乙個完整的例子:

#include    

#include    

using

namespace std; 

struct test//定義乙個名為test的結構體 

;  void

main()     

總之,結構體可以描述陣列不能夠清晰描述的結構,它具有陣列所不具備的一些功能特性。

戰30天C 入門極限 C C 中的結構體(4)

例程2的效率要遠高過例程1的原因主要有以下兩處 第一 例程1中的 test get score 呼叫的時候在內部要在棧空間開闢乙個名為pn的結構體變數,程式pn的時候又再次在棧記憶體空間內自動生成了乙個臨時結構體變數temp,在前面的教程中我們已經說過,它是乙個copy,而例程2中的 void ge...

挑戰30天C 入門極限 C 中布林型別

布林型別物件可以被賦予文字值true或者false,所對應的關係就是真與假的概念。我們通常使用的方法是利用他來判斷條件的真與假,例如下面的 include using namespace std void main void 但是一些概念不清的人卻不知道布林型別的物件也可以被看做是一種整數型別的物件...

C 中的結構體(C 入門)

什麼是結構體?簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別 而結構...