1.数组为构造类型,就是一组数据,用来存储一组数据的
1>只能用来存放一种类型的数据,比如int类型的数组,float类型的数组
2>里面存放的数据称为”元素“
3>构造类型:是由无数个基本数据类型组成的
基本数据类型:int、float、double、char
4>定义:
声明数组类型、元素个数(需要多少存储空间)
格式:元素类型 数组名[元素个数]
2.遍历:按顺序查看每一个数组的元素
for (int i = 0; i < 5 ; i++)
{
printf(“ages[%d] = %d\n “, i, ages[i]);
}
3.数组初始化方式,使用注意
1>正确写法:
int ages[5] = {1,2,3,4,5,};
int ages[5] = {1, 2};
int ages[5] = {[3]=1, [4]=2};
int ages[ ] = {1,2,3};
int ages[‘A’-60] = {1,2,3,4,5}; (’A’常量表达式)
2>错误写法
没有指定元素个数,没办法分配存储空间
int ages[ ];
只能在定义数组的同时进行初始化
int ages[5];
ages = {1,2,3};
如果想在定义数组的同时进行初始化,数组元素个数必须是常量、常量表达式,或者不写
int ages[count] = {1,2,3,4,5};
3>正确写法:
定义数组的过程当中并没有初始化
int count = 5;
int ages [count];
ages[0] = 1;
ages[1] = 2;
ages[2] = 3;
4.计算数组元素个数
int count = sizeof(age)/sizeof(int);
5.内存存储细节
char cs[5] = {‘a’, ’A’, ’D’ ,’e’ ,’f'};
数组名cs代表数组的地址
pintf(“%p\n”,cs);
计算每个元素的地址
for( i = 0; i < 5; i++)
{
pintf(“cs[%d]的地址是:%p\n” , i, &cs[i]);
}(&为取出cs[i]的地址值)
【1】代码练习
//提示用户输入5个学生的成绩,算出平均分并且输出
#include <stdio.h>
int main()
{
int scores[5];
int sum = 0;
for(i = 0 ;i < 5 ;i++ ){
printf(”请输入第%d个学生的成绩:\n” , i+1 );
scanf(“%d” , &scores[i]);
sum += scores[i];
}
printf(“学生的平均分是%f\n” , sum/5.0);
return 0;
}
6.数组和函数的注意点
1>数组作为函数参数,可以节省元素个数
2>数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
*基本数据类型是值传递,不是地址传递
*函数的好处是把一个常用的功能封装起来
【2】代码练习
//设计一个函数,找出整型数组元素的最大值
#inculde <stdio.h>
int maxOfArray(int array[ ], int length)
{
int max = array[0];
for(int i = 1; i < length ; i++)
{
if(max<array[i])
{
max = array[i]
}
}
return max;
}
int main()
{
int ages[ ] = {34, 56, 67, 43, 86, 37, 100, 58};
int max = maxOfArray(ages, sizeof(ages)/sizeof(int));
printf(“%d\n”,max);
return 0;
}
7.二维数组
二维数组的是一个特殊数组,它的元素是一维数组
|
|