复杂数据类型是C语言基础的重点。
1、数组:存储一组数据。
2、特点:只能存放一种类型的数据。如int类型,float类型的数据。
数组的元素个数只可以放常量。int ages[5]={1,2};
3、格式:类型 数组名[元素个数] 例如: int ages[10]={10,23,23,23,2,32,23,24,5,0};
这里引入一个遍历,用来查看数组里面的元素。
for(int i = 0; i <数组元素个数;i++)
{
printf("ages[%d]=%d\n",i,ages[i] );
}
4、初始化方式:(在定义数组的同时进行初始化,数组元素个数必须是常量,或者不写个数)
第一种方式:
int ages[5]={1,2,3,4,5};
第二种方式: 没有定义的默认值为0,即ages[1] = 0; ages[2] = 0;
int ages[5]={ [3]=4, [4]=5 };
第三种方式:确定数组元素,可以省略元素个数
int ages[]={1,2,3};
另一种的数组正确写法: A的ASCII的值是65,小写a为97,两者相差32.为固定值。
int ages['A']={10,2,3,4,5};
或者这样写,但是不建议。
int count = 5;
int ages[count];
ages[0] = 5;
ages[1] = 10;
ages[2] = 190;
5、计算数组长度:可以使用sizeof来计算
int count = sizeof(ages)/sizeof(int)
6、数组与函数:数组作为函数参数时,可以省略函数个数。
数组当作函数参数传递的是数组首元素的地址,也是数组地址。
数组当作函数参数传递时,会当作指针变量来使用,指针变量在64位编译器环境下,占据8个字节。
基本数据类型当作函数参数传递时是值传递。
练习:设计一个函数,找出数组元素最大值:
#include <stdio.h>
int MaxOfArray(int array[],int length)
{
定义一个变量存储最大值(默认首元素)
int max = array[0];
//遍历函数,由于默认最大值是首元素,所以从1开始,int i = 1;
for(int i = 1; i < length; i++){
//如果当前元素大于max,就用当前元素覆盖max
if(array[i]>max){
max = array[i];
}
}
return max;
}
int main()
{
int ages[] = {11, 90, 67, 100, 78, 60, 10, 89, 120};
// 调用函数,传入两个值
MaxOfArray(ages, sizeof(ages)/aizeof(int))
return 0;
}
7、二维数组: 数组中的数组
int ages[3][50];代表可以存放3个数组,每个数组里面放50个元素。
二维数组表现形式:
int ages[3][5] = { {19,12,12,1,2}, {19,12,12,1,2}, {19,12,12,1,2} };
char cs[2][3] = { {'a','b','c'},{'a','b','c'} };