19-C語(yǔ)言中的數(shù)組知識(shí)匯總
一、數(shù)組1.數(shù)組基礎(chǔ)
數(shù)組是相同類(lèi)型數(shù)據(jù)的集合,它們都擁有同一個(gè)名稱。在大數(shù)量處理和字符串操作時(shí),廣泛使用數(shù)組。數(shù)組對(duì)C語(yǔ)言來(lái)說(shuō)起著相當(dāng)至關(guān)重要的作用。
定義一個(gè)數(shù)組,10個(gè)元素為int類(lèi)型的數(shù)組
類(lèi)型名(int[10]) + 變量名(arr)
2.數(shù)組完全初始化#includeint main(void) { int arr[5] = {1,2,3,4,5,}; printf("arr[2] = %d ", arr[2]); } root@ubuntu:/mnt/hgfs/SHARE/2# ./a.outarr[2] =33.數(shù)組遍歷
數(shù)組下標(biāo)越界,編譯器不檢查,提高效率
#includeint main (void) { int arr[5]={1,2,3,4,5}; int i =0;for(i; i<5; i++) { printf("arr[%d]= %d ", i, arr[i]); } } root@ubuntu:/mnt/hgfs/SHARE/2# ./a.outarr[0]=1arr[1]=2arr[2]=3arr[3]=4arr[4]=54.數(shù)組部分初始化intarr[5];intarr_[5] = {1};intarr_3[5] = {};intarr_4[5] = {[2]=100};5.數(shù)組格式intnum =0;scanf("%d",&num);intarr[num]={};//error: variable-sized object may not be iniTIalized不能初始化可變化大小的對(duì)象。//數(shù)組格式是常量,此時(shí)是變量6.左值和右值
左值代表的是內(nèi)存空間,右值代表的是值(內(nèi)存空間內(nèi)容)
數(shù)組名作為右值,打印的是地址,數(shù)字首元素首地址
*i = arr+1 指向數(shù)組第二個(gè)元素
*i = &arr+1 指向整個(gè)數(shù)組之后的第一個(gè)元素
7.傳值調(diào)用
函數(shù)調(diào)用只是傳進(jìn)去實(shí)參的變量名字
數(shù)組名作為參數(shù)時(shí),丟失了數(shù)組本身的大小,退化成了一個(gè)指針
數(shù)組名作為參數(shù),要加上自己的大小(個(gè)數(shù))
二、數(shù)組的應(yīng)用1.冒泡排序#includeintmain(void) {intarr[10];inTI =0, j =0, temp =0;printf("請(qǐng)輸入10個(gè)數(shù): ");for(i; i<10; i++) scanf("%d",arr+i);for(i=0; i<10; i++)printf("%2d",arr[i]);printf(" 排序后 ");for(i=0; i<9; i++) {for(j=0; j<9-i; j++) {if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }for(i=0; i<10; i++) {printf("%2d",arr[i]); }printf(" "); } root@ubuntu:/mnt/hgfs/SHARE/1# ./a.out請(qǐng)輸入10個(gè)數(shù):13582467031358246703排序后01233456782.選擇排序#includeintmain(void) {intarr[10];inTI =0, j =0, temp;printf("請(qǐng)輸入5個(gè)數(shù): ");for(i=0; i<5; i++) scanf("%d",&arr[i]);for(i=0; i<5; i++)printf("%2d",arr[i]);printf(" 排序后 ");for(i=0; i<5; i++) {for(j=i+1; j<5; j++) {if(arr[i] for(i=0; i<5; i++) {printf("%2d",arr[i]); }printf(" "); } root@ubuntu:/mnt/hgfs/SHARE/1# ./a.out請(qǐng)輸入5個(gè)數(shù):5824658246排序后865423.進(jìn)制轉(zhuǎn)換#includeintfun(void) {chararr[100]={0}, i =0;inta =0, b =0;printf("請(qǐng)輸入一個(gè)數(shù):");scanf("%d",&a);printf("請(qǐng)輸入轉(zhuǎn)換的進(jìn)制數(shù):");scanf("%d",&b);do{ arr[i] = a % b; a = a / b; i++; }while(a >0);for(i=i-1; i>=0;i--) {if(arr[i] <10) {printf("%d",arr[i]); }else{printf("%c",arr[i]-10+'A'); } } }intmain(void) { fun(); } root@ubuntu:/mnt/hgfs/SHARE/1# ./a.out請(qǐng)輸入一個(gè)數(shù):666請(qǐng)輸入轉(zhuǎn)換的進(jìn)制數(shù):1629A