詳細(xì)講述C#數(shù)組和指針
C#數(shù)組還是比較常用的,于是我研究了一下C#數(shù)組和指針,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。
C#數(shù)組和指針
1。C#數(shù)組和vector的區(qū)別在于,C#數(shù)組的長(zhǎng)度是固定的。C#數(shù)組一經(jīng)創(chuàng)建,就不允許動(dòng)態(tài)的修改長(zhǎng)度。指針可以像迭代器一樣用于遍歷和檢索C#數(shù)組中的元素。現(xiàn)代C++程序應(yīng)該盡量使用vector和迭代器類(lèi)型,而避免使用低級(jí)的C#數(shù)組和指針。只有在強(qiáng)調(diào)速度時(shí),才在類(lèi)實(shí)現(xiàn)的內(nèi)部使用C#數(shù)組和指針。
2。C#數(shù)組的缺陷在于沒(méi)有size()操作,也就是程序員無(wú)法知道一個(gè)給定C#數(shù)組的長(zhǎng)度。如果需要更改C#數(shù)組的長(zhǎng)度,就必須再聲明一個(gè)更大的C#數(shù)組,把原來(lái)C#數(shù)組的內(nèi)容copy到新C#數(shù)組中去。
3。引用不能定義C#數(shù)組。沒(méi)有所有元素都是引用的C#數(shù)組。
4。非const變量和要到運(yùn)行階段才知道值的const變量都不能用作C#數(shù)組定義的維數(shù)。
- const unsigned buf_size = 512;
- // const 變量.
- int staff_size = 217;
- // 非const變量.
- const unsigned sz = get_size();
- // 運(yùn)行時(shí)才確定的const變量.
- char buf1[buff_size]; // ok.
- char buf2[buff_size + 1];
- // ok, 常量計(jì)算表達(dá)式.
- double salaries[staff_size];
- // error, 非const變量做維數(shù).
- int test_rest[sz];
- // error, 運(yùn)行時(shí)才確定的const變量.
5。默認(rèn)初始化。
在函數(shù)外定義的內(nèi)置類(lèi)型C#數(shù)組,元素都初始化0。函數(shù)內(nèi)定義的內(nèi)置類(lèi)型C#數(shù)組,元素都無(wú)初始化過(guò)程。如果是類(lèi)類(lèi)型的C#數(shù)組,無(wú)論在哪里定義,都調(diào)用默認(rèn)構(gòu)造函數(shù)初始化。
6。顯示初始化。
- int ia[3] = {0, 1, 3};
- char ca1[] = {’c’, ’+’, ’+’};
- char ca2[] = {’c’, ’+’, ’+’, ’\\0’}; [Page]
- char ca3[] = \"c++\";/
- / ca3和ca2有相同的維數(shù)和初始化值,含有四個(gè)元素.
- char ca4[3] = \"c++\"
- // 這會(huì)產(chǎn)生一個(gè)編譯錯(cuò)誤,因?yàn)閈"c++\"是一個(gè)長(zhǎng)度為4的字符串.
- string str_arr[3] = {\"hi\", \"heipi\"};
- // str_arr[2]是一個(gè)值為空的string類(lèi)型元素.
7。與vector不同,一個(gè)C#數(shù)組不能用另外一個(gè)C#數(shù)組初始化,也不能將一個(gè)C#數(shù)組賦值給另一個(gè)C#數(shù)組。個(gè)別編譯器擴(kuò)展功能,支持C#數(shù)組復(fù)制,但是如果希望編寫(xiě)的程序能在不同的編譯器上運(yùn)行,應(yīng)該避免這類(lèi)應(yīng)用。
【編輯推薦】