C 陣列,ArrayList,List區別

2022-02-01 18:53:40 字數 1254 閱讀 9432

共同點:都能儲存一組物件

陣列:在記憶體中時連續儲存的,所以索引很快,賦值與修改元素很快,事件複雜度為o(1),折半查詢法查詢元素效率高。

增添刪除元素的時候需要移動大量元素,因此提供了arraylist物件

string s = new string[3];

s[0] = "a";    //賦值

s[0] = "a1";    //修改

arraylist: 來自於命名空間system.collections,他的大小時按照其中儲存的資料來動態擴充與收縮的,所以我們在申明

arraylist物件的時候不需要指定長度

arraylist list = new arraylist();

list.add("abc");  //新增資料

list.add("123");  

list[2] = 345;       //修改資料

list.removeat(0);  //移除資料

list.insert(0,"hello c#");  //出入資料

注:我們看例項,在list中不僅插入了字串還有數字,這樣在arraylist中插入不同型別的資料是不允許的。因為這樣

arraylist會把所有插入其中的資料都當作成object型別來處理。當我們使用arraylist裡的資料時會報型別不匹配錯誤。

但即使插入資料時保證資料型別一致,在使用時也要將他轉化為對應的原型別來處理,帶來效能損耗,這就是拆裝箱。

裝箱:就是把值型別的資料打包到引用型別的例項中。

int i = 123;   object x = (object)i;    //把值型別123賦給object型別的物件x

拆箱:從引用型別轉變成值型別

object x = 123;int i = (int)x;      //把引用型別123賦值給值型別的變數i

泛型list:由於arraylist存在拆裝箱的效能損耗,後來就有了泛型的概念

listlist = new list();

list.add(123);     //新增資料

list.add[0] =345;     //修改資料

list.removeat(0);   //移除資料

注:上例中,我們插入string字元"helo,c#",ide就會報錯,避免了拆裝箱的效能問題了。

c 陣列 和 陣列指標

今天 乙個朋友 面試,面試題如下 int tmain int argc,tchar argv int ptr int a 1 printf d t d a 1 ptr 1 return 0 我覺得 指標 只要 掌握 兩方面資訊 就 沒什麼 可難的了.一是 指標變數 裡 存放的 位址 二是 指標變數 ...

C語言 陣列(字元陣列)

軟體中,文字處理比數字處理更重要,而處理文字時需要用到字串,所以掌握字串的知識很重要。字串一定有 0 結尾,只有以 0 結尾的字元陣列才能稱為字串。0 是字串的標誌,也是字串結束的標誌。一 字串的定義 char arr 10 char brr 5 不是字串,沒有 0 char crr 5 最後乙個元...

c 陣列,2維陣列

也就是區域性變數的一維陣列,在編譯的時候其維度必須是已知的,因此維度必須是乙個常量表示式。int a ok int a 4 int b a wrong!也就是用new 搞出來的,維度可以是乙個變數 int a 4 int b new int a ok!int a 這是個5行4列的陣列,不過實際c 沒...