函数:
a.是完成特定任务的独立程序代码。
b.语法规则定义了函数的结构和使用方式。
为什么要用函数?
a.可以省去编写重复代码的苦闷。
b.可以让程序更加模块化,提高代码的可读性。
c方便后期修改,完善。
种类:
1.内置函数;
a.C语言系统提供
b.需要在程序前包含定义函数的头文件
2.自定义函数
a.带参数
b.不带参数
常用内置函数如下:
函数的三要素:
①返回值:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
②参数列表:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
③函数声明:告诉编译器函数的名称、返回类型和参数
形参与实参:
形式参数(形参):定义函数名和函数体时需要用的参数,目的是用来接收调用该函数时传递的参数。
实际参数(实参):传递给被调用函数的值。
区别1
形参只能是变量,在被定义的函数中,必须指定形参的类型。
实参可以是常量、变量、表达式、函数等,
区别2
没有确定的值
无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
区别3
形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。
开辟内存存储数据
递归的基本原理
① 每级函数调用都有自己的变量;
② 每次函数调用都会返回一次,当函数执行完毕后,控制权将被传回上一级递归,程序必须按顺序逐级返回递归;
③ 递归函数中位于递归之前的语句,均按被调函数的顺序执行;
④ 递归函数中位于递归之后的语句,均按被调函数相反的顺序执行;
⑤ 递归函数必须包含可以让递归停止的语句。
联系
形参和实参的类型应相同或赋值兼容
指针
C语言的两种变量:
变量(普通变量)存储内容值
地址变量(指针变量)存储地址值
- 格式
类型名 指针变量名;
注:
(1)定义变量(普通变量, 指针变量)都必须在前面有类型名
(2)在定义指针变量时, 指针变量名前的""表示现定义的是一个指针类型的变量. 星号并不是指针变量名的一部分, 只是一个标志
(3)指针变量专门来存地址, 禁止将一个整型值直接赋给一个指针变量 - 指针变量的引用
"&"取地址运算符, 通过&运算符可以取出普通变量的地址
"*"指针运算符, *可以取出指针变量所指向的普通变量的值(间接引用普通变量)
注:
(1)可以通过赋值使一个指针变量“指向”某一普通变量(指针变量=&普通变量)
(2)在C语言中正确的做法是先让指针变量指向一个确定的存储单元后, 再通过该指针变量引用它所指向的存储单元
(3)变量名(普通变量 指针变量)都表示其存储单元内的值
p1=p2; /p1指向了p2 所指向的单元/
(4)若指针变量p指向变量a, 即将变量a的地址赋给了指针变量p
如: int a=20, *p=&a;
则有下列结果:
A *p<=>a
B p<=>&a
C &p〈=〉&a〈=〉 p &与互逆
D *&a <=> *p<=>a
E (*p)++ a++ 都是给变量a的值加1。
(*p)-- a–
++(*p) ++a ++*p
–(*p) --a –p
(5)所有的指针变量在内存中分配的字节数相同 sizeof()
int p int是指针所指向内容的类型