4.陣列的陣列(變長陣列)
可以使用變長陣列,其中每行都有不同的元素個數。為此,需要這樣乙個陣列,其中的每個元素都是另乙個陣列。也可以有陣列的陣列的陣列,或更複雜的陣列。但是,注意這些陣列必須有相同的基本型別。
1)宣告陣列的陣列(變長陣列),其語法要在陣列的宣告中指定多個方括號對,例如:
int jaggedintarray;
2)初始化
有兩種方式:可以初始化包含其他陣列的陣列(稱之子陣列)然後依次初始化子陣列:
jaggedintarray=new int[2];
jaggedintarray[0]=new int[3];
jaggedintarray[1]=new int[4];
也可以使用上述字面值賦值的一種改進形式:
jaggedintarray=new int[3],new int,new int};
也可以簡化,把陣列的初始化和宣告放在同一行上,如:
int jaggedintarray=,new int,new int};
3)使用foreach迭代時,通常需要巢狀該迴圈,迴圈該陣列本身和每個子陣列。因為陣列jaggedintarray包含的是int元素,而不是int元素。
5.3 字串的處理
1.string型別變數可以看作是char變數的唯讀陣列,如:
string mystring=" a string";
char mychar=mystring[4];
2.但是,不能用這種方式為各個字元變數賦值。為了獲得乙個可寫的char陣列,可以使用下面的**,其中使用了陣列變數的tochararray()命令:
string mystring=" a string";
char mychars=mystring.tochatarray();
接著就可以用標準方式處理char陣列。也可以在foreach迴圈中使用字串。
3.mystring.length;
4.mystring.tolower(); mystring.toupper();
5..trim()
1)可以使用.trim()刪除輸入內容前面.trimstart()的和後面的空格.trimend()。
2)也可以使用該命令刪除指定的字元,只要在乙個char陣列中指定這些字元即可,如:
char trimchars=;
string userresponse=console.readline();
userresponse=userresponse.trim(trimchars);
if(userresponse=="y")
//act on response.
6..padleft()和.padright()
1)可以在字串的左邊或者右邊新增空格
mystring="aligned";
mystring=mystring.padleft(10,);
2)也可以新增指定的字元到字串上,這需要乙個char,如:
mystring="aligned";
mystring=mystring.padleft(10,'-'); //這將會在mystring開頭加上3個'-'.
7..split()
1)可以把string轉換為string陣列,把它的指定的位置分隔開。這些位置採用char陣列的形式。如:
string mystring ="this is a test."
char separator=;
string mywords=mystring.split(separator);
notice:
在使用split()時,刪除了分隔符。
C 變長陣列
變長陣列在c99及c11的標準中支援,嚴格講在c 的所有標準中都不支援變長陣列,只是各家編譯器對語言的擴充套件 includeint foo int n int main 嚴格按照c99標準編譯 clang t.c o t std c99 pedantic,輸出正常 嚴格按照c11標準編譯 clan...
多維陣列 陣列指標 函式 變長陣列VLA
include define cls 2 define row 2 這三種形式等價 int sum 2 int cls int int sum 2 int cls int intsum 2 int a cls int n 這三種形式等價 int sum 3 int cls row int int s...
C 變長陣列,不定長陣列
在c 程式設計中,經常的遇到一種情況 需要定義乙個陣列,但陣列的長度不定,因為這個長度是根據某些其他條件確定的,這時就需要定義乙個變長的陣列。這時可以按如下樣式進行定義,以先是定義乙個不定長結構體陣列 結構體為 struct myarry int arr count get need count a...