C 中的陣列 學習筆記

2022-05-04 20:00:21 字數 3948 閱讀 5288

1、陣列的宣告與分配空間

陣列:多個相同型別資料的組合。在c#中,陣列為引用型別。

(1)一維陣列的宣告方式

int a1; //注意方括號寫到變數名的前面

double b;

mydate c;

c#語言中陣列宣告時不能指定其長度(陣列中元素的個數) 例如:int a[5] 非法

(2)陣列初始化

a、動態陣列初始化

陣列定義與為陣列元素分配空間並賦值的操作分開進行。  因為c#中的陣列是引用型

例如:int a=new int[3];  //初始化

a[0]=3;  a[1]=6;  a[2]=9  //賦值

mydate dates;  //物件型陣列

dates=new mydate[3];

dates[0]=new mydate(22,7,1964);  dates[1]=new mydate(1,7,1984); dates[2]=new mydate(22,12,1964);

b、靜態初始化

在定義陣列的同時就為陣列元素分配空間並賦值。 注意:最後可以多乙個逗號

例如:int a=; //也可以寫成 int a= new int;

mydates dates=;

c、陣列元素的預設初始化

陣列是引用型別,它的元素相當於類的成員變數,因此陣列一經分配空間,其中的每個元素也被按照成員變數同樣的方式被隱式初始化。  數值型是0,引用型別是null

例如: int a=new int[5];  //a中的每個元素均為0

3、陣列元素的引用

index為陣列元素下標,可以使整型常量或整型表示式。 例:a[3],b[i],c[6-i]

陣列元素下標從0開始,長度為n的陣列合法下標取值範圍為0~n-1

每個陣列都有乙個屬性length指明它的長度。如:a.length指明陣列a的長度(元素個數)

4、foreach語句

foreach可以很方便地處理陣列、集合中各元素。 foreach是唯讀式遍歷(只能取值,無法改變)

如: int ages=new int[10];

foreach(int age in ages)

5、複製陣列

array.copy方法提供了陣列元素複製功能:

int source=;  //源陣列

int dest=; //目的陣列

//複製源陣列中從下標0開始的source.length個元素到目的陣列,從下標0的位置開始儲存

array.copy(source,0,dest,0,source.length);

6、多維陣列

二維陣列舉例: int[,] a=,,};

可以用a.getlength(0)獲得陣列的行數,a.getlength(1)獲得陣列的列數

7、交錯陣列

c#中交錯陣列是陣列的陣列

例如:int t=new int[3];

t[0]=new int[2];

t[1]=new int[4];

t[2]=new int[3];

c#中多維陣列的宣告和初始化應按照從高維到低維的順序進行。

如:int t1= new int[4]; // 非法,與c++不同

------陣列初始化例項:

1 //#region 一維陣列初始化顯示

2 //int arr1 = new int[6] ;

3 //foreach (int n in arr1)

4 // console.writeline("", n + " ");

5

6 "請輸入陣列的下標:");

7 //int i;

8 //i = convert.toint32(console .readline ());

9 arr1[i]);

10 //

11 //#endregion

12 13 /* #region 陣列初始化顯示

14 int[,] arr2 = new int[2, 3] , };

15 console .write ("陣列的行數為:");

16 console.writeline(arr2.rank);

17 console.write("陣列的列數為:");

18 console.writeline(arr2.getupperbound(arr2.rank - 1)+1);

19 for (int j = 0; j < arr2.rank; j++)

20 個成績:", i + 1);

36 scores[i] =convert.toint32(console.readline());

37 //sum = sum + scores[i];

38 }

39 "學生平均成績為:" + (sum / 10));

40

41 //通過乙個for迴圈求學生的總成績

42 for (int i = 0; i < scores.length; i++)

43 46 //清屏

47 console.writeline("學生平均成績為:" + (sum /scores .length ));

48 //通過迴圈輸出每乙個學生的成績

49 for (int i = 0; i < scores.length; i++)

50 個學生的成績為:", i + 1, scores[i]);

52 }

1 usingsystem;

2 usingsystem.collections.generic;

3 usingsystem.linq;

4 usingsystem.text;

5 6 namespace二維陣列宣告初始化

7 , , };

14 console.write("陣列的行數為:");

15 console.writeline(arr2.rank);

16 console.write("陣列的列數為:");

17 console.writeline(arr2.getupperbound(arr2.rank - 1) + 1);

18 for (int j = 0; j < arr2.rank; j++)

19 25 console.writeline(s);

26 }

27 #endregion

28 }

29 }

30 }

1 usingsystem;

2 usingsystem.collections.generic;

3 usingsystem.linq;

4 usingsystem.text;

5 6 namespace動態二維宣告初始化

7 26 else

27 30 }

31 console.writeline();

32 }

33 }

34 }

35 }

C 學習筆記 堆中的指標陣列

1.棧的記憶體都有有限的,但是堆得記憶體很大,為避免棧的記憶體開銷,我們都把整個物件都存放在 堆中,那麼在堆中區宣告乙個物件方法是 area one new area new 操作符,它用來生成某種型別的乙個物件,通常這個物件在堆中生成。one 宣告了乙個指向堆中的新物件的指標one。area ne...

C 陣列的學習筆記

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace project4 int arr 陣列翻轉 reverse...

C 學習筆記四 陣列

陣列宣告 宣告陣列 typename arrayname arraysize arraysize指定元素數目,必須是整型常數例如 short months 12 該宣告建立乙個有12個元素的名為months陣列,每個元素都可儲存乙個short型別的變數陣列之所以被稱為復合型別,是因為他是使用其他型別...