服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言浅析函数的用法

C语言浅析函数的用法

2023-02-23 16:17ChampLixxx C/C++

C语言函数是用来模块化构建程序的。如果你的功能少,你可以全都写在mian函数中,但是当实现功能多的时候,如果全写在main的函数里,不仅代码不美观,而且函数实现的时候结构复杂,代码重复

问题引入

有时候,我们经常需要在一个程序中,对一个数组进行

键盘输入,打印数组元素值。

有些代码块,功能是相同的,只有数组名和元素个数等参数不一样,

代码形式是一样的,对于同一功能而不同参数的代码块,那么咱就可以

将其封装成一个函数,如果您需要用到这样的功能或者代码块,那么我们

就不需要重复的去写代码块,我们只需要调用这个函数。

函数

  • 函数是完成某个功能的指令序列的封装。
  • 函数有什么特点:
  • 相同功能的代码块,重复利用、模块化思想。

C语言中函数的语法形式

函数返回值类型 函数名(输入参数列表) --> 函数头

{

函数的具体实现 --> 函数体

}

“函数返回值类型”:

函数最终返回的结果的类型。

“单值类型” : 结果用一个寄存器或两个寄存器可以保存的值。

int / long

void : 表示该函数无返回值。(void不可以省略)

问题

return语句后面的那个表达式的值,就是函数调用表达式的值。

但是有些函数并没有返回值,难道说这个函数调用表达式的值没有值吗?

函数调用表达式任然会有一个值,只不过我们不知道这个值时多少,R0中

一定会有一个确定的值(undefine,未知)

例子

?
1
2
3
4
5
6
7
8
9
10
void print_array(int a[], int n)
            {
                int i;
                for(i = 0 ; i < n ; i++)
                {
                    printf("%d ", a[i]);
                }
                printf("\n");
                //return ;
            }

“函数名” : C语言中标识符的规定。

               array_sum 
               Shuzu_he 
                  “输入参数列表” : 规定输入参数必须要有 类型 参数名 ,
                 参数与参数之间用 ',' 隔开
    类型1 参数名1 , 类型2 参数名2 , .......  

void : 表示该函数不带参数。(void可以省略)

return语句 :

return 返回的意思。return只能用在函数内部。

表示函数结束的意思。

return ; 函数结束,不带任何返回值。

在函数的返回值类型为void的时,可能需要用到上述语句。 return 表达式 ; 函数结束,并且带一个返回值,“表达式”的值。

函数的返回值类型,就是return 语句后面的“表达式”的值的类型。

函数的调用过程

函数调用: 调用一个已经实现了的 函数去执行函数中封装的指令序列。

a: 需要指定是哪个函数/任务 ,指定任务名/函数名

b: 完成该任务/函数 需要有哪些实际上的参数(实际参数)

实际参数(实参): 调用该函数式传入的参数。

形式参数(形参): 定义或设计该函数时的参数。

参数的传递,是将 形参 = 实参的值!!

“实参” : 就是一个表达式

指定实参时,不需要指定实参的类型。

实参需要与形参一一对应(不仅仅实参与形参的个数对应,

并且实参与形参的类型也要相对应)!!!

例:

?
1
2
3
4
5
6
7
int main()
            {
                int a[10];
                input_array(a , 10);//调用函数
                int s = sum(5  , 6);
                printf("s == %d\n", s);
            }

函数的调用过程        a、把实参的值 赋值给 相对应的形参
        b、跳转到函数中去执行函数中的指令序列。
            直到遇到 return语句 或者 函数语句全部执行完毕。
            return 后面的表达式的值,将作为整个函数调用表达式的值。 
            当函数执行完毕,那么此时CPU会回到函数调用处,
            继续往下面运行。 

函数声明

就是告诉编译器 这个“名字(标识符)”是一个函数名,

在后面的某个位置会定义的。

函数声明: 
    void input_array(int arr[], int n)  ;    //函数头 

外部的函数声明:

extern 外部函数的头部;

本文件中的函数的声明:

函数头部分 ;

变量声明

外部的全局变量的声明 :

extern 变量的类型 变量;

例子: 假设你想要在1.c中去使用2.c中的那个变量

2.c                  1.c 
                    //对2.c中变量a进行外部声明 
                    extern int a;
int a = 250;         printf("2.c =>  a ==%d\n", a);

数组声明

int a[3][4];

数组的声明与普通变量的声明类似!!!

到此这篇关于C语言浅析函数的用法的文章就介绍到这了,更多相关C语言函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_46836491/article/details/125583123

延伸 · 阅读

精彩推荐
  • C/C++C++设计模式中的观察者模式一起来看看

    C++设计模式中的观察者模式一起来看看

    这篇文章主要为大家详细介绍了C++观察者模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来...

    贪心的葡萄6692022-10-19
  • C/C++数组和指针的区别深入剖析

    数组和指针的区别深入剖析

    在C/C++中,指针和数组在很多地方可以互换使用,这使得我们产生一种错觉,感觉数组和指针两者是完全等价的,事实上数组和指针是有很大的区别的...

    C语言教程网2702020-11-11
  • C/C++C++ 继承,虚继承(内存结构)详解

    C++ 继承,虚继承(内存结构)详解

    C++继承和虚继承的内存模型是一个老生常谈的话题,实现方法主要依赖于编译器,本文从多个角度通过代码详解C++中虚继承的内存模型知识,感兴趣的朋友...

    很酷很爱笑11212022-01-10
  • C/C++Qt自定义Widget实现互斥效果详解

    Qt自定义Widget实现互斥效果详解

    在使用Qt时,可能会遇到这种问题:多个控件互斥,类似于QRadiButton控件,但又不是单纯的QRadioButton控件,互斥的可能是一个窗口,也可能是几个按钮,等等...

    中国好公民st7192022-09-03
  • C/C++详解C++设计模式编程中对访问者模式的运用

    详解C++设计模式编程中对访问者模式的运用

    这篇文章主要介绍了C++设计模式编程中对访问者模式的运用,访问者模式在不破坏类的前提下为类提供增加新的新操作,需要的朋友可以参考下...

    freshow4732021-03-28
  • C/C++C语言模式实现C++继承和多态的实例代码

    C语言模式实现C++继承和多态的实例代码

    本篇文章主要介绍了C语言模式实现C++继承和多态的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    name_文强10892021-05-26
  • C/C++C++实现遗传算法

    C++实现遗传算法

    这篇文章主要介绍了C++实现遗传算法,以实例形式较为详细的分析了遗传算法的C++实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    pass8610792021-03-18
  • C/C++C语言联合体Union特点及运用全面讲解教程

    C语言联合体Union特点及运用全面讲解教程

    这篇文章主要为大家介绍了C语言联合体Union特点及运用的全面讲解教程有需要深度朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    高邮吴少11082022-02-13