数组

简介: 一、数组的定义二、访问数组元素三、循环跟数组的关系四、数组的初始化

数组


内容介绍:

一、数组的定义

二、访问数组元素

三、循环跟数组的关系

四、数组的初始化

 

 

一、数组的定义

  • 类型 数组名[元素个数

int a[6];

char b[24];

double c[3];]

注意:数组不能动态定义


  • 上边几个类型,都占用了多少字节的内存?

image.png

 

二、 访问数组元素

  • 数组名[下标]

a[0]; //访问a数组中的第一个元素

b[1];//访问b数组中的第二个元素

c[5];//访问c数组中的第六个元素

 

  • 注意:

int a[5] ;//创建一个具有五个元素的数组

a[0]; //访问第一个元素的下标是0,不是1

a[5]; //报错,因为第五个元素的下标是a[4]

 

 

循环跟数组的关系

  • 这是因为我们常常需要使用循环来访问数组:

int a[10];

for (i =0; i<10;i++)

{

a[i]= i;

}

 

  • 案例:

举个例子,我们尝试用数组存放班里10位同学的数学成绩,并计算出平均数。

#include <stdio.h>

#define NUM 10

int main( )

{

int s [NUM] ;

int i,sum=0;

for(i=0;i<10;i++)

{

printf("请输入第%i位同学的成绩:”i+1);

scanf("%d"&s[i]) ;

sum +=s[i] ;

}

//浮点型

printf("成绩录入完毕,该次考试的平均分是:%.2f\n", (double)sum / NUM ;|

return 0 ;

}

 

运行:gcc test1.c && ./a. out

结果:

请输入第1位同学的成绩:80

请输入第2位同学的成绩:90

请输入第3位同学的成绩: 70

请输入第4位同学的成绩: 66

请输入第5位同学的成绩:77

请输入第6位同学的成绩: 54

请输入第7位同学的成绩:67

请输入第8位同学的成绩:89

请输入第9位同学的成绩:65

请输入第10位同学的成绩: 99

成绩录入完毕,该次考试的平均分是:75.70

 

 

四、数组的初始化


  • 将数组中所有元素初始化为0,可以这么写:

int a[10] = {0}; //事实上这里只是将第一个元素赋值为0


  • 如果是赋予不同的值,那么用逗号分隔开即可:

int a[10]={1,23,4,567,8,90};


  • 你还可以只给一部分元素赋值,未被赋值的元素自动初始化为0:

int a[10]={1,23,4,56};

//表示为前边6个元素赋值,后边4个元素系统自动初始化为0


  • 举例1

#include <stdio.h>

int main()

{

int a[10]={0}

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

0

0

0

0

0

0

0

0

 

  • 举例2

#include <stdio.h>

int main()

{

int a[10]

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

134518360

1075976712

134513721

8810972

134513196

8821984

8818676

134513696

134513424

134513707

 

  • 举例3

#include <stdio.h>

int main()

{

int a[10]={1234567890}

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test1.c && ./a. out

结果:

1

2

3

4

5

6

7

8

9

1

0

 

  • 举例4

#include <stdio.h>

int main()

{

int a[10]={12345}

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test1.c && ./a. out

结果:

1

2

3

4

5

0

0

0

0

0

 

  • 有时候还可以偷懒,可以只给出各个元素的值,而不指定数组的长度(因为编译器会根据值的个数自动判断数组的长度):

int a[] = {1,2,34,567,890};


  • 举例1

#include <stdio.h>

int main()

{

int a[]={12345}

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

1

2

3

4

5

5

13451375

0

-1079398472

10218806

 

  • 举例2

#include <stdio.h>

int main()

{

int a[10]={[3]=3,[5]=5.[8]=8};

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

0

0

0

3

0

5

0

0

8

0

 

  • 举例3

#include <stdio.h>

int main()

{

int a[10]={[3]=3,[5]=5.[8]=8};

int i;

 

for (i = 0; i < 10;i++)

{

printf(“%d\n”, a[1])

}

printf(“%d\n”,sizeof(a));

return 0;

}

运行:gcc test2.c && ./a. out

结果:

0

0

0

3

0

5

0

0

8

0

40

 

 

  • C99增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素进行初始化赋值,而未被赋值的元素自动初始化为0:

int a[10] = {[3] = 3,[5]=5,[8] = [8]};

相关文章
|
9天前
|
存储 C++ 索引
|
2月前
|
存储 C语言
数组
数组。
13 0
|
3月前
|
存储 人工智能 算法
4.为何数组下表从0开始
4.为何数组下表从0开始
36 1
|
8月前
|
存储 机器学习/深度学习 Java
原来这就是数组
原来这就是数组
52 0
|
8月前
|
算法
三 数组
三 数组
36 0
|
8月前
|
存储 IDE Linux
|
9月前
|
存储 C# 索引
C#视频—数组
C#视频—数组
|
10月前
|
存储 算法 容器
关于数组我所知道的
关于数组我所知道的
44 0
|
10月前
|
存储 程序员 C#
【总结】C#中的数组
【总结】C#中的数组
|
12月前
数组简单介绍
数组简单介绍
40 0