結構體的簡單總結

2021-08-17 13:56:54 字數 1660 閱讀 1313

結構體與鍊錶

1、 結構體的概念

a)陣列可以定義變數集合,所有的元素都只能有乙個型別

b)結構體也可以定義變數集合,任何成員都可以是不同型別

c)通常陣列內部變數叫做元素,結構體內部變數叫成員

d)使用結構體定義的變數也叫物件

2、 定義結構體:  //注意結構體結尾處要有「;」

struct [結構體名]

型別識別符號成員名: //都是普通變數

型別識別符號成員名

a) 方括號代表可以不指定名字

b) 分號錯誤:

error c 2628:』sinfo』 followed by 『int 』 is illeagel

3、 定義結構體要注意:

a) 一般定義在函式外,讓所有的函式都能訪問

b) 往往定義在.h標頭檔案中,可以被多個cpp檔案包含(並使用)

c) 變數無法在.h標頭檔案中定義,最多可以使用extern把cpp中的變數宣告到.h中

d) 結構體定義形成了建立結構體變數的模板,它是乙個型別而不是乙個變數

e) 結構體只用定義了物件(結構體變數)

f)  結構體中的變數稱為結構體元素或者結構體成員

4、 結構體之間的定義

a) 乙個結構體可以包含另乙個結構體物件作為成員變數

b) 結構體不能自己包含自己(求sizeof會出現鏡中鏡)

c) 本結構體的指標可以作為結構體成員

5、 結構體變數(物件-objict)

a) 定義好了結構體之後,並沒有申請記憶體空間

b) 結構體自身不是變數,而是一種型別

c) 相當於乙個結構體就是乙個模板,在定義變數時依據模板在記憶體上申請空間

6、 定義結構體物件

a) 最主要的定義結構體物件的方式,是使用結構體名或者別名來定義結構體物件(或者指標)

b) 可以在結構體尾部直接定義結構體物件,結構體指標變數

c) 沒有名字的結構體只能在尾部定義變數

7、 結構體初始化

a) 使用大括號或者多層大括號

b) 結構體整體賦值:兩個同型別的結構體物件之間的結構體賦值

①將所有的成員賦值一遍(最差的方法)

②memcpy可以將兩個結構體賦值

③2個同型別的結構體物件直接用=賦值(=賦值在編譯器內其實還是使用memcpy)

8、 結構體成員

a) 對於物件的成員變數的呼叫在物件後面跟.呼叫

例如:物件.成員變數            point.x

b) 早期使用(*物件指標)方式訪問結構體成員,後來簡化為 –>

例如:(*p).x

c) 物件的指針對成員變數的呼叫使用指標符號 ->

p -> x

9、 結構體做引數時:

a) 結構體作為引數時,複製了乙個新的結構體物件(效率低)

int getdayofyear(stime time)

b) 使用結構體指標

int getdayofyear(stime *time)

10、           結構體陣列

a) 定義:定義結構體物件時加指定物件個數

b) 初始化和清零:使用一層或者多層大括號

例如:sstudentstu[100] =

c) 清零:

sstudent stu[100] = ;

memset;

結構體的總結

結構體的基本概念 define crt secure no warnings include include includetypedef struct personmyperson myperson是struct person型別的別名 void test01 struct person2 myp...

簡單的結構體排序

在網上搜尋結構體排序很多都是使用氣泡排序來進行 學習了lambda表示式後,產生用這個來作為謂詞對結構體進行排序 很簡單的結構體排序,結構體只是很簡單的string型別 int型別 include include include include include include using names...

結構體知識總結

struct b關於結構體,我們一定不會陌生,結構體可以說和類的用法類似,但是也有不同之處,總的來說,結構體的使用使我們可以更加方便的儲存和使用資料。我在上面就定義了乙個結構體,裡面有兩個元素,乙個是int型別的,乙個是char型別的,因此,結構體裡面可以放進去不同型別的資料,這跟結構體的空間開闢有...