C语言课堂笔记之函数篇

  概述

一 函数的基础语法(函数定义 调用 声明)

二 函数的注意事项(传值 返回值)

小知识:

面向结构程序面临三个缺点 (移植性 扩展性 维护性不好)

一 函数的基础语法

函数三要素 (函数名 函数形参 函数返回值)

函数使用的形式 (声明 定义 调用)

在调用函数前需声明函数

小知识:在声明中加上extern关键字 会在外部文件中查找函数的编译  不写会默认为函数在当前文件编译

函数声明 包括函数名 返回值和形参类型

注意 可以只写形参类型而不写变量名    因为 声明不分配内存空间 所以不绑定变量名

函数名

需要体现自注释性 以提高代码的可读性 推荐  动词—名词  搭配 参数一般不超过 four

返回值

一开始不清楚返回类型时先写void 待最后写return时 再做校正

小知识: exit vs return 

exit(1);是一个函数 结束整个程序 返回系统

return 返回调用函数 

main里的return 0;交代系统程序为正常退出 不然系统还要检查正异常退出情况 系统会很忙

函数注意事项

函数的传参

传值 vs 传地址

传值: 传实参变量名(只能使用不能修改实参) 当只使用不修改实参变量内存空间的值时 在函数调用时传递实参变量名

传地址: 传实参变量地址(既能使用又能修改实参)当既使用又修改实参变量内存空间的值 在函数调用时 传实参地址

函数调用过程

1 找到函数地址

函数地址 == 函数人口地址 == &函数名(函数名也是一个指针 保存函数地址)

2 给形参分配空间

3 传参 将实参的值传递给形参的空间储存

4 执行函数体里的语句

5 函数返回值 并释放空间(函数的空间:局部变量)

思考:

以上操作会提示段错误 因为形参里分配的空间在函数调用后就释放掉了 实际的实参并未分得空间

传出参数和传入参数

传入参数: 传递给函数只使用不修改实参

传出参数: 传递给函数并可以修改实参的值(相当于函数的返回值)

思考:

函数如何返回多个值

(利用传出参数)(利用结构体传出参数)

小提示

传指针给形参时 不要误认为就是在传地址 要判断 是修改指针变量对应内存空间的值(传指

针变量地址) 还是要修改指针变量指向内存空间的值(传指针变量名)

命令行参数

主函数参数{int argc,int*argv[] }  主程序调用时后跟的参数为传入main的参数

argc 即argument count 统计参数个数 注意 把命令本身也统计一次

函数入口参数检查

重要知识点

函数返回值 不能返回局部变量的地址 

原因

函数局部变量数组在栈空间开辟字节地址    当返回时返回首字节地址     当函数执行完后 一返回

就会将局部变量字节地址空间释放掉 

栈空间特点

生命周期只在函数体里 执行完释放 所以主函数里 *p 会指向无效空间 因此出现段错误

解决办法  加上   static   将生命周期延长至整个程序结束之后释放 才可以返回局部变量的地址

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值