(六十)型別組合

2021-09-23 23:29:36 字數 2379 閱讀 5469

之前學到了指標,陣列,指標陣列,結構等。他們之間可以互相結合使用,原則同正常使用。

上**:

#includestruct aa	//定義結構

;struct aaa //定義結構aaa

;int main()

; //建立指標陣列cc,成員為2個

//因為是指標,所以想要操作指標所指向位址的值的話,就必須給指標初始化(即&s4,&s5},不然就無法操作

cc[0]->a = 2; //cc是指標陣列,cc[0]是指標,因為是指標,所以可以用 指標->變數名 這是指標遇見結構可以使用箭頭運算子

cout << cc[0]->a << endl;

(*cc[1]).a = 4; //cc[1]也是指標,於是使用 (*指標名).變數名 這種形式來為結構的變數賦值

cout << cc[1]->a << endl << endl;

//以下是指標涉及到多個變數的結構

cout << "以下是指標涉及到多個變數的結構" << endl;

aaa a1, a2; //先建立使用aaa結構的 結構a1和a2

aaa *dd[2] = ; //建立指標陣列dd,分別指向a1和a2

*dd[0] = ; //dd是指標,dd[0]是指標dd第乙個成員(但,是位址),*dd[0]是第乙個成員的值,可以充當結構名

//當初始化結構的時候,我們使用 結構名=;這種形式進行初始化

//因此*dd[0]相當於 a1,於是初始化,兩個變數分別為11和22

cout << dd[0]->b << endl; //輸出指標第乙個變數b

cout << (*dd[0]).c << endl << endl; //輸出結構第二個變數c

//以下是指向指標陣列的指標

cout << "以下是指向指標陣列的指標" << endl;

aa **e = cc; //cc是陣列指標,陣列又是指標,單陣列的話,要用*e,但又是指標,所以是**e

cout << e << endl; //因為e是指向指標陣列的指標,因此位址是相同的,都是指向指標陣列的第乙個元素的位址

cout << cc << endl;

auto f = cc; //auto建立自動符合型別的f

cout << f << endl; //f輸出的是位址,說明f是指標

system("pause");

return 0;

}

①給結構中某個變數賦值:

結構名.變數名={}

給結構中某個變數賦值

②當指標遇見結構:

(*指標名

).變數名= 

可以給結構中某個變數賦值。

指標名->

變數名=

也可以給結構中某個變數賦值。

這個時候,(*

指標名)充當的就是結構名的角色。

③結構陣列:

陣列名[編號].變數名=

通過這種形式給陣列結構的成員的結構變數賦值。

陣列名[編號]充當的就是結構名的角色,

注意:(1)編號為0的是第乙個元素,以此類推。

(2)陣列名 實際上是位址

④當指標陣列遇見結構的時候,需要給指標陣列賦值

比如aa *cc[2] = 

s4是結構,cc是指標陣列,cc[0]是第乙個指標,那麼要將結構賦值給指標,就需要給結構名前加&表示位址,

於是上面那行**就相當於cc[0]=&s4;cc[1]=&s5;

⑤當指標指向指標陣列時:

指標陣列中的每個成員,是指標,指向相應的記憶體位址,比如cc陣列中的2個指標,分別指向&s4和&s5。

陣列名,實際上是陣列的位址;

因此,指標陣列名,實際上是儲存著2個指標的陣列位址,而非這2個指向的陣列位址。

也就是說:

cc[0]指向&s4,

&cc[0]指向儲存cc[0]這個指標的 記憶體位址,

cc是儲存cc[0]和cc[1]這個指標的記憶體位址,又是這個陣列中第一元素的記憶體位址,也就是&cc[0];

e指向的是cc,也是&cc[0]

⑥指標名陣列遇見結構時的各種變化:

指標名  是指標陣列

指標名[編號]  是指標

*指標名[編號]  是指標的值,可以充當結構名,然後比如說用在:

(*指標名)[編號].變數名={} 

可以給相應的結構賦值,但前提是,指標已經被初始化。

⑦幾個變化:

結構名.變數名

(*指標名

).變數名

指標名->變數名

(*指標名

)[編號

].變數名

以上幾個都是等價的,都是 結構中某個變數 ,但唯一需要注意的是,

使用指標的話,必須進行初始化,未初始化的是不安全的,也是不正確的。

BizTalk開發系列 二十 型別作用域

biztalk 開發系列 orchestration中的type概念跟.net 裡的class一樣,可以在orchestration開過過程中將多個例項繫結到一種型別。orchestration 檢視裡包括的型別有port types multi part message types,correla...

列舉型別的組合

列舉的 高階用法 組合運用 例如乙個介面裡有 增 刪 查 改等操作,但對應不同使用者就有不同操作許可權。例如a使用者只能增 刪,而b使用者只能查 改等等。如果在許可權表中某乙個字段型別指定使用者的操作許可權時,問題就出來了。來看看一下3種解決方式 1.每個操作許可權一條資料,缺點 每次更改許可權時,...

設計模式 結構型別 組合

1 意圖 將物件組合成樹形結構以表示 部分 整體 的層次結構。composite使得使用者對單個物件和組合物件的使用具有一致性。2 適用性 1 你想表示物件的部分 整體層次結構。2 你希望使用者忽略組合物件與單個物件的不同,使用者將統一地使用組合結構中的所有物件。3 c 例項 test.cpp 定義...