0
点赞
收藏
分享

微信扫一扫

C语言P3函数详解

文章目录

1.什么是函数?

这是维基百科中对于函数定义,通俗的理解函数可以将函数理解为组成程序的一个个零部件,函数组成了文件,文件组成了一个个的工程。

2.C语言中函数的分类

1.库函数

那么了解了库函数我们还要学习如何使用库函数,这里我推荐一个网站,上面可以查到许多的库函数,完全可以满足我们的使用。cplusplus

2.自定义函数

下面我们来学习自定义函数的结构。

int add(int x,int y)
{
    int z = x + y;
    return z;
}

1.返回类型(也即是函数的返回值的类型,因为这个函数求得是两个变量得和,所以返回值也是int。)
2.函数名(add,其他函数调用该函数时,就会使用到函数名)
3.形参声明(int x, int y)用来提示形参能接受什么类型的值
4.函数题,就是大括号内的复合语句用来实现函数功能。

3.函数的参数

1.实际参数

我们在调用函数时实际传给函数的参数就是实际参数。
实参可以是变量常量表达式等,但是在函数调用的时候他们必须有确定的值以便传给函数。

int main()
{
    int a = 3;
    int b = 4;
    int c = 0;
    c = add(a,b);//该行代码就是函数调用,a,b就是
    传给函数的实参。
    return 0;
}

2.形式参数

4.函数的调用

1.传值调用


int sub(int x,int y)
{
    return x-y;
}

int main()
{
    int a = 3;
    int b = 4;
    int c = 0;
    c = add(a,b);//该行代码就是函数调用,a,b就是
    传给函数的实参。
    return 0;
}

这是函数的传值调用,在sub函数内改变形参x,y不会影响到外面的实参a,b。

2.传址调用

即将实参的地址传给函数的形参,形参与实参指向同一块内存空间,这时改变形参就会改变实参

void Swap(int* x,int* y)
{
    int tmp = *x;
    *x = *y;
    *y = tmp;
}

int main()
{
    int a=4;
    int b=1;
    Swap(&a,&b);//想要交换实参的值就得传地址

    return 0;
}

这个函数就通过传址调用实现了在函数内部交换函数实参的值。

5.函数的嵌套调用和链式访问

1.嵌套调用

嵌套调用是指在函数内部调用另一个函数。

#include<stdio.h>
void Print()
{
    printf("kisskel");
}

void Text()
{
    ptintf("hello ");
    Print();
}
int main()
{
    Text();
    return 0;
}

上述代码简单演示了函数的嵌套调用,在main函数内部调用Text函数,又在Text函数内部调用了Print函数。

2.链式访问


#include<stdio.h>

int main()
{
    printf("%d",ptrintf("%d",printf("43")));
    return 0;
}

上述代码是典型的链式访问,printf函数的返回值是打印字符的个数,所以上述代码执行结果为

6.函数的声明和定义

了解函数的声明和定义之前我们要知道,函数是可以跨文件访问的,为什么函数可以跨文件使用,因为实际工程中若是所有函数都集中在一个.c文件,那么维护起来会非常复杂。

1.函数声明

通常函数的声明和头文件的引用都会放在头文件中。

#ifndef   __TEST_H__
#define   __TEST_H__

#include<stdio.h>
int Add(int x, int y);//函数声明
...
#endif

2.函数定义

函数定义通常放置在.c文件中

//test.c
int add(int x,int y)
{
    return x+y;
}

函数的具体实现就在这里完成。

7.函数递归

想要了解函数递归,请移步此博客。

因为C语言的函数极为重要可以说,函数是组成程序的零件,所以函数板块后续还会有两篇博客,函数栈帧的创建和销毁,函数设计原理原则。

举报

相关推荐

0 条评论