一、陣列
1.陣列的定義: intarr=; 或者 int arr[10]=;
初始化元素的個數可以不全,未初始化的元素預設為0
2.求陣列的空間:
sizeof(arr); 或者sizeof(元素)*元素的個數;
3.求陣列的個數:
假設arr為int型別的陣列,sizeof(arr)/sizeof(int); 或者sizeof(arr)/sizeof(arr[0]);
注:在實際開發過程,往往不直接寫陣列個數,而是用求陣列個數。這樣有利於總數發生變化時,遍歷陣列時不需要修改每一處。
4.越界問題:c語言內部沒防止越界,程式設計師只能通過**來防止出現。
二、字串陣列
1.字串陣列:是一種特殊的陣列。特徵是:
(1)必須是char型別的陣列。
(2)在陣列定義的有效空間內,必須含有乙個數值是『\0』的位元組。
(3)'\0'作為字串的結束標誌。
2. 字串陣列的初始化:
(1)指定元素個數的陣列:
char str1[10] = ; //不是有效字元,因為缺少』\0』結束符號
char str2[10] = "aab"; //不可超過9個有效字元
(2)不指定個數的字串陣列,根據初始化個數包括'\0'
char str3 = "abcdef"; //申請7個位元組的陣列空間,多了乙個」\0」
char str4 = ; // 申請是4個位元組的陣列空間
3.陣列長度和字串長度:
(1)strlen函式:是用來計算字串中有效字元的長度。(不包括結尾符)
(2)sizeof:求字串陣列的元素個數,sizeof得出的結果至少比strlen大1以上。
(3)strlen函式:計算方法是從陣列頭迴圈到結尾符'\0'結束,得出的字串有效字元長度總是小於sizeof得出的的數值。
(4)sizeof:得出的陣列長度與陣列內每個元素儲存的數值無關;而strlen函式返回的字串長度,與結尾符'\0'在陣列中的位置有關。
char str1=;
char str2="console";
printf("sizeof(str1)=%d\n",sizeof(str1)); // 5
printf("sizeof(str2)=%d\n",sizeof(str2)); // 8
printf("strlen(str2)=%d\n",strlen(str2)); // 7
三、陣列做引數
陣列做引數時, 可以不指定長度,也可以隨便指定任何長度。因為陣列做引數時性質已經變了,本質上只傳遞了陣列的位址(指標)給形參。陣列的空間特徵已經消失了,無法通過形式引數獲取**陣列的元素個數。
無論實參陣列有多少個元素,使用sizeof獲取形式引數的大小結果一定是4。(因為任何乙個指標變數占用的大小都是4個位元組)。
#include void bubble_sort(int a,int nlen);
void print(int a,int nlen);
int main(int argc, char* argv)
; print(arr,sizeof(arr)/sizeof(arr[0]));
bubble_sort(arr,sizeof(arr)/sizeof(arr[0]));
printf("排序後的陣列:\n");
print(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}//氣泡排序
void bubble_sort(int a,int nlen)
j++;
} i++; }}
void print(int a,int nlen){
int i=0;
//while(i
氣泡排序對字串陣列排序
給定乙個字串排序 以字母為準,比如 a b或者b 同字母的情況,小寫字母大於大寫字母,比如 a a private static void testcomparestring 使用do while boolean ischanged int nmaxindex asource.length 1 st...
C語言 陣列 1 2 多維陣列 字串陣列
二維陣列 1 一維陣列和二維陣列 1 int ages 50 2 int agesii 3 10 陣列能夠存放 3 個陣列,每個陣列存放 10 個數值,共 3x10 個資料元素 2 二維陣列的記憶體狀況 3 二維陣列的宣告 1 宣告乙個兩行三列二維陣列 陣列第二維下標必須給定,第一維下標可省略不寫 ...
字串陣列排序
1,給定乙個字串陣列。按照字典順序進行從小到大的排序。思路 1,對陣列排序。可以用選擇,冒泡都行。2,for巢狀和比較以及換位。3,問題 以前排的是整數,比較用的比較運算子,可是現在是字串物件。字串物件怎麼比較呢?物件中提供了用於字串物件比較的功能。compareto 方法。public class...