006-配列

25533 ワード

はいれつ
配列の旧名は、データのセットです.
int a[10];//10個の整数を格納できます
char  c[8];//8文字を格納できます
一般フォーマット:配列タイプ配列名[要素個数];
配列要素へのアクセス:下付き、a[2],a[0],a[4];//下付き文字は0から始まります
 
次に例を示します
1 #include<stdio.h>

 2 

 3 

 4 

 5 //        

 6 void show(int a[],int n);

 7 //      

 8 void reverseArray(int a[],int n);

 9 //     

10 int returnMax(int a[],int n );

11 //       

12 int returnSum(int a[],int n);

13 int main()

14 {

15     int a[3];//  

16     int nArray[] = {0,1,2,3,4,5,6,7,8,9};//      

17     

18     printf("%lu
",sizeof(a));// = * 19 20 // 21 a[0] = 11; 22 a[1] = 22; 23 a[2] = 33; 24 25 // 26 int arrayLenght = sizeof(nArray)/sizeof(int); 27 int i = 0; 28 while( i ++ < arrayLenght)//while 29 { 30 printf("%d ",nArray[i]); 31 } 32 printf("
"); 33 show(a,3); 34 reverseArray(a,3); 35 printf("max :%d
",returnMax(a,3)); 36 printf("sum:%d
",returnSum(a,3)); 37 38 return 0; 39 } 40 // , ,int a[10] int *a; 41 void show(int a[],int n)//a ,n 42 { 43 // sizeof, , , 44 // sizeof on array function parameter will return sizeof 'int *' instead of 'int []' 45 //printf(" :%lu
",sizeof(a));
// = * 46 for (int i = 0; i < n; i ++)//for 47 { 48 printf("%d ",a[i]); 49 } 50 printf("
"); 51 } 52 53 // 54 void reverseArray(int a[],int n) 55 { 56 while (n-- > 0 ) { 57 printf("%d ",a[n]); 58 } 59 printf("
"); 60 } 61 62 // 63 int returnMax(int a[],int n ) 64 { 65 int max = 0; 66 for (int i = 0; i < n; i ++)//for 67 { 68 if (max < a[i]) 69 { 70 max = a[i];// 71 } 72 } 73 return max; 74 } 75 // 76 int returnSum(int a[],int n) 77 { 78 int sum = 0; 79 for (int i = 0; i < n; i ++)//for 80 { 81 sum += a[i];// 82 } 83 return sum; 84 }

2 D配列および多次元配列
2ビット配列は特殊な1次元配列です.要素は1次元配列です.
2つの配列は1つのテーブルに相当し、行と列があります.
int a[3][2];//2行3列、下図のように
a[0][0] a[0][1]a[1][0] a[1][2]a[2][0] a[2][2]
下付きもゼロから始まり、配列名は配列のアドレス、すなわち最初の要素のアドレスa[0][0]である
3つの一次元配列:a[0],a[1],a[2]と理解できる.
ここでa[0]はa[0][0]、a[0][1]を含み、
a[1]はa[1][0]、a[1][1]を含み、
a[2]はa[2][0]、a[2][1]を含む
2 D配列の例
1 #include <stdio.h>

 2 

 3 //      

 4 

 5 void show(int a[][2],int h,int l);

 6 int main()

 7 {

 8     

 9     //  

10     int a[3][2];

11     //for     

12     for (int i= 0; i < 3; i++)

13     {

14         for (int j = 0; j< 2; j ++)

15         {

16             a[i][j] = i+j;

17         }

18     }

19     printf("length: %lu
",sizeof(a)); 20 // , 21 printf("
a[0]: %p
",&a[0]); 22 printf("a[1]: %p
",&a[1]); 23 printf("a[2]: %p
",&a[2]); 24 show(a,3,2); 25 26 return 0; 27 } 28 29 void show(int a[][2],int h,int l) 30 { 31 // ,int (*)[2]; 32 //sizeof on array function parameter will return size of 'int (*)[2]' instead of 'int [3][2]' 33 // printf("%lu
",sizeof(a));
34 35 // 36 for (int i= 0; i < h; i++) 37 { 38 for (int j = 0; j< l; j ++) 39 { 40 printf("%p\t",&a[i][j]);// , 41 //printf("%d ",a[i][j]); 42 } 43 printf("
"); 44 45 } 46 printf("
"); 47 48 }

文字列
「hello」//これは文字列で、複数の文字からなり、文字0で終わり、0文字は表示されません.
文字列出力には%sを使用します.
文字列の長さ:strlen関数は文字の長さを取得します.0文字は含まれません.
1 #include <stdio.h>

 2 #include <string.h>//strlen      

 3 

 4 //      c,     ,    1

 5 char containC(char str[],int n);

 6 

 7 //   

 8 int main()

 9 {

10     char c1[] = "jkhasdjkfhnkcdfdf";//           \0

11     char c2[] = {'1','2','3','\0'};//      ,          \0

12     printf("%s\t %s
",c1,c2); 13 printf("%lu\t %lu
",strlen(c1),sizeof(c1));//strlen , \0 14 15 printf("%c
",containC(c1,strlen(c1))); 16 17 return 0; 18 } 19 20 // c, , 1 21 char containC(char str[],int n) 22 { 23 // 24 for (int i = 0; i < n ; i ++) 25 { 26 if (str[i] == 'c') 27 { 28 return '1';// 1 29 } 30 } 31 return '0';// 0 32 }