13 C 陣列和元組

2022-02-18 21:38:41 字數 3289 閱讀 8491

如果需要使用同一型別的多個物件,陣列是一種資料結構,它包含同一型別的多個元素

一、一維陣列

1、陣列的宣告方法

int  a;

因為陣列是引用型別,引用型別有個特點是:宣告變數時不會馬上分配乙個記憶體,只有在用new關鍵字建立例項的時候,才會分配記憶體。

2、建立乙個陣列例項

a=new

int[4];

棧裡的變數a引用了託管堆上的4個整型值。

如果事先不知道陣列中包含多少個元素,可以使用集合。

3、初始化陣列變數

int a=new

int[4];

右邊的裡如果寫了數字,那數字必須與{}數字的個數相同。給出的是4個,{}裡必須寫入4個資料。

4、初始化陣列簡寫

初始化乙個陣列時可以不寫數字自由分配元素個數,或者更簡單直接省略new和int。

int a = new

int ;

int a=;

5、建立隱式型別的陣列

var name=new  ;

兩個語法上的特別地方:

1、等號左邊省略的

2、右邊必須是new{}的形式

3、{}裡的資料必須是相同型別,否則編譯器不判斷型別導致報錯。

6、訪問陣列元素

提取陣列元素

int b=a[2];

陣列元素的下標是從0開始的,所以b的值是4.

給陣列元素重新賦值

int b=6;a[

2]=b;

陣列的維數沒有限制,以二維陣列舉例

1、二維陣列的宣告

int[,] a;

2、二維陣列建立例項

int [,] a=new

int[4,2];

3、初始化

int [,] a= new

int[4,2],,,};

/*可以看做是乙個4行2列的表,是第1行的資料,一共4行

5 67 2

9 35 4

*/

4、簡寫

int[,] a= new

int[,] ,,,

};int[,] a = ,,,

};

5、訪問陣列元素

需要用兩個座標確定乙個數的位置。

提取二維陣列元素

int b = a[2, 1];

一定要記住只有new的時候裡的數字表示的是行和列,其他地方a[2,1]這裡的2和1是陣列下標啊,是要從0開始算的。

對陣列的某個元素重新賦值

a[2,1]=5;//

這麼寫就把第三行第二列的值3變成了5

交錯陣列也稱之為陣列的陣列,

1、宣告

int  a;

2、建立例項

inta=new

int[3];

這個陣列裡包含了3個陣列,而且這3個陣列的長度可以自由設定。

3、賦值

a[0]=new

int ;

a[1]=new

int;

a[2]=new

int;

交錯陣列也可以包含二維的陣列

例如

int[,] a =new

int[3

][,];

a[0]=new

int[,],};

a[1] = new

int[,] , , };

a[2] = new

int[,] };

四、引用型別陣列

有乙個person類

public

class

person

public

string b

public

override

string

tostring()

",a,b);

}

}

宣告person陣列

person per = new person[2];

引用型別的陣列必須在使用前為其分配記憶體,否則會丟擲nullreferenceexception異常.

per[0] = new person ;

per[

1] = new person ;

也可以初始化賦值

person per =,

new person

};

1、用for語句遍歷陣列

int  a=;

for(int x=0;x)

2、foreach遍歷陣列

foreach和for有一樣的功能也能遍歷陣列,

int a=;

foreach(int x ina)

3、for和foreach的對比

.foreach最大的優點就是能夠在不知道陣列下標的情況下遍歷整個陣列,**可以寫的簡練些。其他的優勢就沒有for了

.for很靈活不僅可以能正著遍歷還能倒著遍歷以及還可以跳的遍歷。

.如果迴圈的主題需要元素的下標,則需要用for

.如果需要修改陣列元素,則必須用for,foreach修改會報錯。

class

program

//定義乙個返回元組的函式

(string, int

) stu()

}

陣列常用的屬性

length屬性表示陣列中元素的個數(包括多維陣列的個數).

int b=a.length;  //b=8

陣列常用的方法

1、

13 C語言總結

pragma mark 第一章 c基礎 void func1 void func1 pragma mark 第二章 分支結構 void func2 void func2 printf autumn d autumn 結果 需要注意的是,列舉變數的值是上乙個值 1 autumn 5 pragma ma...

1 3 C 對C的擴充

asm bool true false wchar t namespace using class public protected private friend this inline virtual throw try catch new delete explicit mutable expo...

13 C語言提高(三)

1.結構體中指標變數的深拷貝和淺拷貝 疑問點記錄 char p char malloc 100 strcpy p,renzhenming 這兩行 定義了乙個字元指標p,他指向堆記憶體中一段空間,這一段空間儲存了乙個字串renzhenming,那麼既然這個指標指向了這塊記憶體,那麼我通過取指標元素符號...