函数
函数是具有特定功能的代码块,函数使得程序更加模块化,这样便于人们阅读,修改,完善程序
1.函数的定义:
返回值类型  函数名 (形式参数)
{
  声明
  语句
}
无参函数举例
void hello()//无参数无返回值
{
   printf(“Hello World");
}
int peopleCount()//无参数 有返回值
{
  return 33;
}
有参函数举例
int max(int a, int b)//有参数有返回值
{
    return a > b ? a : b;
}
void printfNumber(int x)//有参数无返回值
{
printf(“number is %d”, x);
}
函数注意事项:
返回值类型:
函数的结果值类型,函数不能返回数组.没有其他的限制.
指定返回类型是void类型说明函数没有返回值
函数名的命名规范:由单词组成,除了第一个单词外,其余单词首字母大写
工程名的命名规范:由单词组成,并且每个单词的首字母都要大写(是单词,不是拼音)
变量名的命名规范:由单词组成,除了第一个单词外,其余单词首字母大写
每个形式参数的前面说明其类型,即使几个参数具有相同的数据类型,也必须对每个形式参数分别进行类型说明.形式参数用逗号进行分隔,就算没有参数函数后面的()也不能省略.
返回值:
函数的返回值成为函数的值,只能通过return语句返回给主调函数.
一个函数只能有一个返回值
函数即使没有返回值也可以使用return来结束函数的执行,回到主调函数
return 后面的语句不再执行.
函数调用:
函数调用由函数名和跟随其后的实际参数
函数的声明:
严格的编写大型程序事实上,可以把程序分割成任意数量的源文件.
源文件:xx.h头文件’xx.m源文件
函数声明写在.h文件里
函数定义写在.m源文件里
形参/实参
形式参数:出现在函数定义中,以假名字来表示函数调用时需要提供的值
实际参数:出现在函数调用表达式
函数调用中,形参会拷贝实参内容,传递参数是给函数传递信息的一种方法
形式参数的作用是:
提前占位,同时可以提高函数的通用性,而实际参数是真实数据,出现在函数调用的表达式中,在程序跳转执行函数内部代码时,形参会拷贝实参的内容.
注意:
实参传递给形参,是单向的值传递,是拷贝的过程
函数的嵌套
C语言不允许函数嵌套定义,但是允许函数嵌套调用
注意避免嵌套定义
数组作为参数
1.数组元素作为参数,与普通变量作为参数一样,单向的值传递.
2.数组作为参数,把数组名作为实参传入,数组名是数组的首地址
3.数组名作为参数时,形参和实参实际上是同一段内存空间.
数组作为参数时,是将数组名作为是实参,同时在函数执行其内部代码时,形参拷贝的数组名是指向的同一个内存空间(数组的内存空间).
函数的递归调用
C语言允许实现函数实现体再次调用函数本身.这种调用方式成为递归调用,这个函数称为递归函数
在计算机中阶乘就可以使用递归调用.
注意:递归一定要有出口.
变量的作用域:
所谓变量的作业域指的是变量的有效范围
定义在不同的位置,变量的作用域是不同的
外部变量(全局变量):文件作用域,从变量被声明的点开始一直到所在文件的末尾.
跟随在外部变量声明之后的所有函数都可以访问
局部变量:
快作用域,从变量被声明的点开始一直到第一个大括号的结尾
注意:
外部变量和局部变量可以重名,但是局部变量作用域只能访问局部变量