什麼是結構體?
簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別(而結構體是),陣列名稱是常量指標,所以不可以做為左值進行運算,所以陣列之間就不能通過陣列名稱相互複製了,即使資料型別和陣列大小完全相同。
定義結構體使用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()
; void print_score(test pn)//以結構變數進行傳遞
; void print_score(test &pn)//以結構變數進行傳遞
; void print_score(test &pn)
void main()
; void print_score(test &pn)
void main()
呼叫的時候在內部要在棧空間開闢乙個名為pn的結構體變數,程式pn的時候又再次在棧記憶體空間內自動生成了乙個臨時結構體變數temp,在前面的教程中我們已經說過,它是乙個copy,而例程2中的:
void get_score(test &pn)
卻沒有這一過程,不開闢任何新的記憶體空間,也沒有任何臨時變數的生成。
第二:
例程1在mian()中,必須對返回的結構體變數進行一次結構體變數與結構體變數直接的相互賦值操作。
for(int i=0;i
#include
using namespace std;
struct test
; test a;
test &get_score(test &pn)
void print_score(test &pn)
{
cout<
結構體 基礎
一 結構是什麼?結構體是一種可以儲存多個資料的集合,像陣列一樣,你可以把多個資料儲存到乙個變數裡,但與陣列不同的是,結構體中的成員 和陣列元素一樣,在結構體中我們稱之為成員 可以是不同型別的。結構體和陣列比較 1 陣列中所有元素的型別相同,但結構體允許不同 2 陣列通過 陣列名 下標 或者指標來訪問...
結構體基礎
結構體,結合程式看好多了。程式直接網上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...