如果需要使用同一型別的多個物件,陣列是一種資料結構,它包含同一型別的多個元素
一、一維陣列
1、陣列的宣告方法
int a;
因為陣列是引用型別,引用型別有個特點是:宣告變數時不會馬上分配乙個記憶體,只有在用new關鍵字建立例項的時候,才會分配記憶體。
2、建立乙個陣列例項
a=newint[4];
棧裡的變數a引用了託管堆上的4個整型值。
如果事先不知道陣列中包含多少個元素,可以使用集合。
3、初始化陣列變數
int a=newint[4];
右邊的裡如果寫了數字,那數字必須與{}數字的個數相同。給出的是4個,{}裡必須寫入4個資料。
4、初始化陣列簡寫
初始化乙個陣列時可以不寫數字自由分配元素個數,或者更簡單直接省略new和int。
int a = newint ;
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=newint[4,2];
3、初始化
int [,] a= newint[4,2],,,};
/*可以看做是乙個4行2列的表,是第1行的資料,一共4行
5 67 2
9 35 4
*/
4、簡寫
int[,] a= newint[,] ,,,
};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=newint[3];
這個陣列裡包含了3個陣列,而且這3個陣列的長度可以自由設定。
3、賦值
a[0]=newint ;
a[1]=new
int;
a[2]=new
int;
交錯陣列也可以包含二維的陣列
例如
int[,] a =newint[3
][,];
a[0]=new
int[,],};
a[1] = new
int[,] , , };
a[2] = new
int[,] };
四、引用型別陣列
有乙個person類
publicclass
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修改會報錯。
classprogram
//定義乙個返回元組的函式
(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,那麼既然這個指標指向了這塊記憶體,那麼我通過取指標元素符號...