C语言学习笔记之数组(Arrays)

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

相关文章
相关标签/搜索