函数(构成c语言程序最小的单元)

文章插图
编程的函数和数学里的函数类似,只不过数学里的函数仅仅只是输入数(可以是一个数或者几个数)通过一定的 *** 得到另一个数 。而编程里的函数不止可以做数学计算,还可以干其他的事,而且输入可以没有,也可以有好几个(就行你给一个人发出命令,可以让他去写一篇文章,可以规定一些要求,也可以什么也不要求,然后返回的东西就是写好的文章)
函数的声明:
数据类型 函数名([数据类型 参数名1,数据类型 参数名2 。。。,数据类型 参数名n]);
函数的定义:
数据类型 函数名([数据类型 参数名1,数据类型 参数名2 。。。,数据类型 参数名n]){
语句1 。。。
语句n
}
其中函数不能嵌套定义,也就是说不能在一个函数的语句里不能在定义一个函数 。
实际上,那些参数也是函数里的局部变量,只是摆在了括号里等待数据的传入 。而且在c语言里,在调用函数时,传入参数的个数和类型都要正确 。
往深处看,函数的声明有些类似于变量的声明,其实,函数的声明这一块是向系统申请一块内存,然后往这一块内存填充代码 。函数名是函数的入口地址,本质就是指针 。
函数的调用形式
存在的函数名(传入的参数1, 。。。。,传入的参数n)
但调用的前提是前面必须有函数的定义或者声明,否则会出现错误
以上的一些规定其实可以和数学的函数类比,数学的函数哪里学过嵌套定义另外的函数,但是我们可以在前面设一个函数,然后在另外一个函数调用前面设好的函数,而且数学里前面没有设好的函数,后面的函数不能无中生有调用前面没有的函数(就像你之前如果不知道写文章是什么意思,老板命令你写文章,你不知道怎么回事 。)
在c语言中,整个程序的入口函数名为main,定义入口函数的格式为:
int main(){}和int main(int argc,char**argv){}
其他的类型数组类型是为了方便解决一些问题,在内存的排列是连续的 。表示 *** 如下:
数据类型 []
数组变量初始化一般有如下几个 ***
int a[3]={1,2,3}
int a[]={1,2,3,6,7}
int a[10]={1,2,3}
但是数组在定义后不能直接整体赋值,也就是说,像a={3,4,5,6,7}的赋值将会导致错误,这是因为数组名表示的是指针常量,而不是变量,只能间接通过内存复制来间接赋值 。
数组变量引用的下标一定是有符号的整数类型(无符号的将会导致程序崩溃)
指针是存储内存地址的存储单元,它的作用是方便对某一块内存进行操作(比如对另一块传入的变量进行操作,对申请到的无名内存进行操作等)其基本形式是 数据类型 *,而在利用指针的时候,指针的使用 *** 是 *变量名,整体就变成了指向目标类型的变量了
结构体是指为了方便管理数据专门自己设置的数据类型,不管有名还是无名它都会开辟内存空间,一般定义方式为
struct 自定义结构体名 {
数据类型1 成员名称1
。。。
数据类型n 成员名称n
};
这里自定义结构体名可以省略,但是这里的分号不可以省略,因为定义的整体就是一个数据类型
eg struct student {
unsigned number;
unsigned age;
unsigned score;
} function(){}
这里的函数的返回类型为结构体student
使用定义的结构体类型的 *** 是struct 已定义的结构体名
枚举类型enum在c语言是一种构造类型,用于声明一组命名的常数 。其基本定义格式是 enum 枚举类型名字 {成员名1[=整数值], 。。。。,成员名n[=整数]}
推荐阅读
- 一英尺有多长多少厘米,一英尺有多长啊
- 生死对决,巴基斯坦为何可以和军力世界第四的印度抗衡?
- 如何注销微信账号 如何注销微信账号
- 法西斯国家为什么会被世界人民推翻?
- 三星猎户座1080处理器相当于骁龙多少_三星猎户座1080处理器参数
- 怎样改照片像素和尺寸大小 像素和尺寸的关系
- 请问越来越多的女生开始玩王者荣耀,是好事还是坏事?
- airpods2和1怎么区分 airpods一代和二代区别
- 苹果手机的小圆点怎么设置锁屏 苹果手机的小圆点怎么设置