C語言的數組:數組
1、數組的聲明dom
type arrayName [array size]函數
2、初始化數組spa
能夠逐個初始化數組,也能夠用一個初始化語句。指針
法一:code
1 double balance[5]={1000.0,2.0,3.4,7.0,50.0};
這時候大括號裏邊值的數目不能大於在數組聲明是方括號中指定元素的數目。
若是忽略了元素的個數,那麼數組的大小則是初始化時元素的個數。blog
法二:教程
1 double balance[]={1000.0,2.0,3.4,7.0,50.0};
3、訪問數組元素索引
數組元素能夠經過數組名稱加索引進行訪問。元素的索引是放在方括號內,跟在數組名稱的後邊。get
1 double salary = balance[9];
4、多維數組
4.1多維數組的聲明:
type namme[size1][size2]...[sizeN]
4.2二維數組的聲明
type arrayName [x][y]
一個二維數組能夠被認爲是一個帶有x行y列的表格。
4.3初始化二維數組
法一:
1 int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
法二:
1 int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
5、傳遞數組給參數
法一:
形式參數是一個指針
1 void myFunction(int *param) 2 { 3 4 }
法二:
形式參數是一個已定義大小的數組
1 void myFunction(int param[10]) 2 { 3 4 }
法三:
形式參數是一個未定義大小的數組
1 void myFunction(int param[]) 2 { 3 4 }
舉例:
各元素的平均值
1 # include <stdio.h> 2 3 double getAverage(int arr[],int size); 4 5 int main() 6 { 7 //帶有5個元素的整形數組 8 int balance[5]={1000,2,3,17,50}; 9 double avg; 10 11 //傳遞一個指向數組的指針做爲參數 12 avg=getAverage(balance,5); 13 14 //輸出返回值 15 printf("平均值是:%f",avg); 16 17 return 0; 18 } 19 double getAverage(int arr[],int size) 20 { 21 int i; 22 double avg; 23 double sum; 24 25 for(i=0;i<size;++i) 26 { 27 sum+=arr[i]; 28 } 29 avg=sum/size; 30 31 return avg; 32 }
6、C從函數返回數組
若是要從函數返回一個一位數組,必須聲明一個返回指針的函數
1 int *myFunction() 2 { 3 4 }
舉例:
1 # include <stdio.h> 2 # include <stdlib.h> 3 # include <time.h> 4 5 //要生成和返回隨機數的函數 6 int *getRandom() 7 { 8 static int r[10]; 9 int i; 10 11 //設置種子 12 srand((unsigned)time (NULL)); 13 for(i=0;i<10;++i) 14 { 15 r[i]=rand(); 16 printf("r[%d]=%d\n",i,r[i]); 17 } 18 return r; 19 } 20 21 //要調用上面定義函數的主函數 22 int main() 23 { 24 //一個指向整數的指針 25 int *p; 26 int i; 27 28 p=getRandom(); 29 for(i=0;i<10;i++) 30 { 31 printf("*(p+%d):%d\n",i,*(p+i)); 32 } 33 34 return 0; 35 }
7、指向數組的指針
數組名是一個指向數組中第一個元素的常量指針。
1 double balance[50];
balance 是一個指向&balance[0]的指針,即數組balance的第一個元素的地址。
所以,下面的程序片斷把p賦值爲balance的第一個元素的地址。
1 double *p; 2 double balance[10]; 3 p=balance;
使用數組名做爲常量指針是合法的,反之亦然。所以,*(balance+4)是一種訪問balance[4]數據的合法方式。
一旦把第一個元素的地址儲存在了p中,就能夠使用*p、*(p+1)、*(p+2)等,來訪問數組元素。
舉例:
1 # include <stdio.h> 2 3 int main() 4 { 5 //帶有5個元素的整形數組 6 double balance[5]={1000.0,2.0,3.4,17.0,50.0}; 7 double *p; 8 int i; 9 10 p=balance; 11 12 //輸出數組中每一個元素的值 13 printf("使用指針的數組值\n"); 14 for(i=0;i<5;i++) 15 { 16 printf("*(p+%d):%f\n",i,*(p+i)); 17 } 18 19 printf("使用balance做爲地址的數組值\n"); 20 for(i=0;i<5;i++) 21 { 22 printf("*(balance+%d):%f\n",i,*(balance+i)); 23 } 24 25 return 0; 26 }
整理自菜鳥教程 https://www.runoob.com