主页 > 互联网 > 内容页

消息!C语言基础知识(6)--数组与函数

2023-06-15 11:12:33 来源:嵌入式技术

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

示例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=0;i--){printf("%d ",buff[i]);}printf(“n”);int min,max;float avg=0;min=max=buff[0];for(i=0;i<5;i++){avg+=buff[i];if(min>buff[i]){min=buff[i];}if(max

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=48printf("array2=%lun",sizeof(array2));//2*4*4=32int 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

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返回值永远都为8for(i=0;i

编写一个函数,实现二维数组遍历。

#include void twoarray_print(int [][4],int ,int );int main(){int array2[][4]={10,20,30,20,20};int line=sizeof(array2)/sizeof(array2[0]);//计算行printf("line=%dn",line);//计算列int row=sizeof(array2[0])/sizeof(int);//sizeof(array2[0][0])printf("row=%dn",row);twoarray_print(array2,line,row);}void twoarray_print(int buff[][4],int line,int row){int i,j;for(i=0;i

审核编辑:汤梓红

标签:

上一篇:STM32L0 ADC使用HAL库关于校准问题的说明 每日速讯
下一篇:最后一页