C语言学习笔记:函数

1.定义与声明的区别

定义:从无到有把函数创建出来;

声明:说明有这个函数,一般是函数在主函数后面时,在主函数中调用时使用。

2.传参

1.传参不是同步进行的,默认情况下为从右到左,如下

先传参数j,再传参数i

输出:20 10 30

2.值传

只把实参的值传给函数形参,形参时实参的复制品,两者都有自己的存储空间,形参无法改变实参,即无法在被调函数中修改主调。

调用函数时,临时给形参开空间,复制实参的值,然后运行函数,调用结束时销毁形参的存储空间,从始至终实参没有改变。如以下,输出10

以下,输出10,20

但指针传参的形参可以修改实参,形参不是复制实参的值,而是存储实参的地址。

函数调用时,不要对实参编写(函数名(i,++i))进行自增或自减操作,因为不同系统值不一样。

3

正在运行的程序叫进程;

流水线结构:pc寄存器取当前执行的下一行代码地址,cpu执行代码

调用函数:pc读取到时跳转到调用函数的入口地址(首行代码地址),执行完后再跳转回来,即恢复现场;

跳转时会有专门的内存空间保存跳转时所在的主函数位置的地址,即保护现场;

此处专门的内存空间为栈区,栈结构特点为先进后出,后进先出,保存再栈区的数据有:1.函数定义的局部变量;2.函数形参;3.函数返回的位置。栈区是有大小的,再Linux系统下不超过8Mb,Windows不超1Mb

除此之外,还有堆区、字符串常量区、静态区(全局区)、代码区

4.递归

下例不会引发死循环,但栈区会填满,引发程序崩溃

实例1+2+...+100

先找出不循环的条件 if(1 == n)

递归并不比循环有效率,能不用就不用

5.数组作为函数参数

要传两个参数,数组和长度(函数名(a[], int len)),数组作为函数参数,是指针传参。

const char*dest 既可以传字符数组名,也可以传字符串常量;若没有const则只能传数组名。

二维数组作参数,列数必需定死为固定值。

数组遍历

字符数组遍历

二维数组遍历

二维字符数组遍历

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值