1.数组概念 数组:相同数据类型的集合。
定义格式:数据类型 数组名[成员个数];
示例:char buff[10]; --表示定义一个char类型数组buff,buff可以存放10个char类型变量;
2.数组特性 1.数组空间连续的,下标是0开始的,最后一个成员下标为成员个数-1;
2.数组名字表示数组首地址。
3.数组可以整体赋值(必须在定义数组时完成),也可以单个成员赋值;
4.数组空间大小计算:sizeof(数组名);成员个数:sizeof(数组名)/sizeof(数组名[0]);
5.数组整体初始化时,未初始化的成员默认初始化为0;单个成员赋值时,未初始化的成员为随机值。
示例:
#include int main(){ int buff[5]={10};/*定义一个int类型数组*/ int data[]={10,20,20};/*定义一个int类型数组并完成初始化*/ printf(buff数组空间:%ldn,sizeof(buff)); printf(data数组空间:%ldn,sizeof(data)); printf(buff数组成员个数:%ldn,sizeof(buff)/sizeof(int)); printf(data数组成员个数:%ldn,sizeof(data)/sizeof(data[0])); int count=sizeof(buff)/sizeof(int); int i=0; /*数组遍历*/ for(i=0;i< count;i++) { printf(buff[%d]=%dn,i,buff[i]); } int data2[5]; data2[0]=100; for(i=0;i< 5;i++) { printf(data2[%d]=%dn,i,data2[i]); }} 示例2:定义一个5个成员整型数组,从键盘上获取5个整数,输出数组所有成员(正向和逆向);输出最大值,最小值和平均值;
#include int main(){ int buff[5]; int count=sizeof(buff)/sizeof(buff[0]); printf(请输入%d个整数:,count); int i; for(i=0;i< count;i++) { scanf(%d,&buff[i]); } printf(数组遍历:); for(i=0;i=0;i--) { printf(%d ,buff[i]); }printf(“n”); int min,max; float avg=0; min=max=buff[0]; for(i=0;ibuff[i]) { min=buff[i]; } if(max< buff[i]) { max=buff[i]; } } avg/=count; printf(最大值:%dt最小值%dt平均值%.2fn,max,min,avg);}[wbyq@wbyq 1227]$ ./a.out 请输入5个整数:45 12 1 35 422数组遍历:45 12 1 35 422 数组逆向遍历:422 35 1 12 45 最大值:422 最小值1 平均值103.00 3.二维数组 一维数组仅有一行,二维数组则有行和列。
二维数组定义格式:数据类型 变量名[参数1][参数2];
示例:int buff[3][4];
行列性质:定义一个int类型的二维数组,二维数组有3行4列;
数组关系:定义一个int类型的二维数组,[3]表示在二维数组中存放3个一维数组,[4]表示每一个一维数组中有4个int类型成员。
二维数组空间计算:sizeof(buff);
二维数组行计算:sizeof(buff)/sizeof(buff[0])
二维数组列计算:sizeof(buff[0])/sizeof(int )
二维数组定义及输出示例:#include int main(){ int array[3][4]; int array2[][4]={10,20,30,20,20}; printf(array=%lun,sizeof(array));//3*4*4=48 printf(array2=%lun,sizeof(array2));//2*4*4=32 int line=sizeof(array2)/sizeof(array2[0]);//计算行 printf(line=%dn,line); int row=sizeof(array2[0])/sizeof(int);//sizeof(int)等同于sizeof(array2[0][0]) printf(row=%dn,row); int i,j; //二维数组遍历 for(i=0;i< line;i++) { for(j=0;j< row;j++) { printf(array2[%d][%d]=%dn,i,j,array2[i][j]); } }}[wbyq@wbyq 123]$ ./a.out array=48array2=32line=2row=4array2[0][0]=10array2[0][1]=20array2[0][2]=30array2[0][3]=20array2[1][0]=20array2[1][1]=0array2[1][2]=0array2[1][3]=0 4.函数 函数作用:提高代码利用率,是程序结构更简洁、清晰。
函数特性:函数功能单一,重复利用性高;
4.1 函数格式返回值类型 函数名(形参){ 语句块;} 函数没有返回值时,返回值类型则用void表示
函数不需要传参时,形参则用void表示。
4.2 注意事项 1.函数形参不能为静态变量
原因:
1.静态变量只会初始化一次,而函数形参每一次函数调用都会重新赋值。
2.静态变量生存周期是和main函数一样,而函数形参只能作用于当前函数。
2.函数形参与实参
1.函数形参是变量时不能改变实参的值。形参要改变实参的值需要通过指针方式。
2.函数形参只能作用于当前函数,形参名和实参名可以不一样,但形参类型和实参类型必须一一匹配。函数形参由调用函数时分配空间,在函数结束时释放空间。
3.函数返回值
1.函数返回值可以返回函数局部变量的值,不能返回局部变量的地址。
4.3 函数示例 形参为int类型,返回值为int类型。
写一个函数实现求两个数之和;
#include int func(int,int);/*声明函数*/int main(){ int data; int a=10; int b=20; data=func(a,b); printf(data=%dn,data);}/*写一个函数实现求两个数之和;*/int func(int a,int b){ return a+b;} 形参为数组类型,返回值为void;
编写一个函数,实现数组遍历。
#include void array_print(int buff[],int count);//声明函数int main(){ int buff[]={10,20,30,42,20,20}; printf(数组空间大小:%ldn,sizeof(buff)); array_print(buff,sizeof(buff)/sizeof(int));}/*实现函数:完成数组遍历形参:buff[] --要遍历的数组 count -- 数组成员个数返回值:无*/void array_print(int buff[],int count){ int i=0; //printf(数组空间大小:%ldn,sizeof(buff));//错误,不能对形参进行空间计算,对地址sizeof返回值永远都为8 for(i=0;i< count;i++) { printf(buff[%d]=%dn,i,buff[i]); }} 编写一个函数,实现二维数组遍历。
苹果iPhone 5改进:不如Android千元机配置
Adam Taylor玩转MicroZed系列63:调试Zynq应用程序
python导入模块的两种方式
3D打印活性仿生骨技术取得突破,可在生物体内生长发育
华为麒麟芯片会消失吗,3nm麒麟9010正在研发
C语言基础知识(6)--数组与函数
AI在手游方面有哪些新的应用?
区块链金融行业标准进行的怎么样了
鸿蒙ArkUI开发-Video组件的使用
一文弄懂CPU卡是什么
自动驾驶领域迎来最大规模投资:软银22.5亿美元“砸向”通用
全球首款搭载5G模组防爆AR智能头盔,搭载北斗定位和高性能国产AI芯片
基于RS485总线实现单片机与PC机的远程控制设计
三星Note7官方翻新版要来了, 网友评论: “亡者归来”
特斯拉电机小而牛的原因
打造中国云计算生态,阿里云平台强势出击
OPPO旗舰机OPPOMIX即将来临,全面屏+骁龙835比OPPOFind9值得期待
聚焦超声技术可为阿尔茨海默氏病的治疗带来帮助
led显示屏真的节能了吗
拓扑结构有哪些