欢迎光临
我们一直在努力

C语言基础:函数基础(二) 函数与数组的关系

3.函数的声明

1.若被调函数写在了主调函数后面,编译器会报”implici decla“,可以将该函数在主调函数前面声明

2.多文件使用函数时,需要对其声明,允许被其他文件调用

语法:

返回值  函数名(形参表);

4.函数的执行过程

保护现场:当函数要被调用时,pc寄存器会保存函数调用位置的下一条指令的地址保存在栈空间

恢复现场:当被调函数执行完时,通过出栈保护现场的地址,决定了cpu继续执行的位置在函数被调用的下一条指令

5.函数的传参(值传递)

1.函数传参过程,其实是实参向形参拷贝的过程,是单向的值传递,实参和形参各自有各自的内存空间

2.值传递:在被调函数中无法修改主调函数的变量

3.函数传参是自右向左的,如:

fun(get_val(num1),get_val(num2));
//会先执行get_val(num2)

6.函数的递归调用

定义:函数直接或间接自己调用自己

本质是循环

注意:1.递归要有出口,否则会成为死循环

           2.递归调用内存开销大(栈内存),非必要少用

#include<stdio.h>
//递归求sum和
int get_sum(int n)
{
if(1==n)
{
return 1;
}
return get_sum(n-1)+n;
}

//递归求阶乘n!
int get_jiecheng(int n)
{
if(1==n)
{
return 1;
}
return get_jiecheng(n-1)*n;
}

int main()
{
printf("%d\\n",get_sum(100));
printf("%d\\n",get_jiecheng(5));
return 0;
}

7.函数和数组的关系

(1)函数和一维整型数组

传参方式:

定义:
返回值 函数名(int 数组名[],int len)
{
}

调用:
函数名(数组名,数组长度);

注意:

1.数组作为形参时,必须是数组类型:int a[ ], [ ]中的常量可有可无

2.数组作为函数参数传递时,本质是数组元素的首地址,所以形参的本质是一个地址,占8个字节

3.由于数组名传参本质传递的是首地址,所以必须要传递整型数组的长度

4.除了sizeof(数组名),数组在函数内和外面的使用方法一样

赞(0)
未经允许不得转载:171主机测评 » C语言基础:函数基础(二) 函数与数组的关系
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址