C语言第七讲,函数入门.

           C语言第七讲,函数入门.

一丶了解面向过程和面向对象的区别.

为什么要先讲面向过程和面向对象的区别?

面向过程,就是什么都要自己做.  比如你要吃饭. 那么你得自己做饭.

面向对象, 面向对象就是我要吃饭. 我只需要支付一点点酬金.就能吃了. 不用自己做了. 

而C语言就是面向过程的.

也就是说. 面向过程就是自己做. 自己写函数.

二丶什么是函数.

函数不是数学上的函数. 这里的函数指的是解决一定问题的基本代码.

基本的功能单位.

比如你想写一个加法.

我们可以自己写一个Add函数. 然后进行调用则可以完成加法操作.

比如我们家里都有袋子.

这一个袋子可以装鞋子. 袜子.以及其余的各种东西.

但是鞋子会很脏.这个时候你用一个小袋子装起来. 袜子也是. 然后放到这个大袋子里面.

这个小袋子就是函数.

三丶自定义函数

语法:

函数返回值  函数名字 (函数行形参)

1.无参数无返回值函数的定义

首先定义一个无参数无返回值的函数.

比如我们打印输出.

void Print()
{

    printf("%d\r\n", 2);
}
int main()
{
    Print();
    system("pause");
    return 0;
}

这样 main函数则会调用我们自己写的函数. 则会输出2.

2.有参数有返回值的定义

int Sub(int a, int b)  //返回值int ,所以用int类型变量接受.参数是int,且是2个.所以传入两个int参数
{

    return a - b;
}

int main()
{
    int Ret = Sub(4,3);//main 调用Sub
    printf("%d\r\n",Ret);
    system("pause");
    return 0;
}

3.函数的形参和函数的实参数.

int Sub(int a, int b)
{

    return a - b;
}

int main()
{
    int Ret = Sub(4,3);
    printf("%d\r\n",Ret);
    system("pause");
    return 0;
}

还是我们第二个函数的例子. 此时我们要知道 Sub函数的 a和b都是形参

什么意思?

  也就是说,你可以把它们看作是变量a 和 b,在函数调用过程中.  4, 3两个整形常量. 会赋值给 a 和 b

也就是额外产生的代码为:

  int a = 4;

  int b = 3;

但是这个是编译器产生的. 我们看不到. 如果我们的4和3是变量. 那么调用玩 sub函数之后,我们的变量是不会改变的.

例如:

int Sub(int a, int b)
{

    return a - b;
}

int main()
{
    int nNum1 = 4;
    int nNum2 = 3;
    int Ret = Sub(nNum1,nNum2);
    printf("%d\r\n",Ret);
    printf("nNum1 = %d  nNum2 = %d\r\n",nNum1,nNum2);
    system("pause");
    return 0;
}

输出结果.

所以说,我们的nNum1 和nNum2并没有做减法,而是Sub中 a 和 b做的减法.

等讲指针的时候在讲解怎么更改实际参数的值.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏十月梦想

JavaScript类型数字相关操作

进制转换操作:默认转换为10进制数         八进制数0开头表示         无效的情况下默认十进制,去掉前导0         十六进制0x开头

8420
来自专栏算法channel

程序员必看:实现栈有这两种策略,有完整分析和代码实现

这两篇中分别总结了程序的时间性能度量指标,典型的时间复杂度类型,Java中类型的空间消耗的量化情况。后一篇考虑计算机中最重要的基础算法查找和排序算法,这篇可以说...

11300
来自专栏诸葛青云的专栏

C语言陷阱「词法陷阱 之字符与字符串」

用单引号引起的一个字符实际上表示一个整数,该整数值为该字符在编译器采用的字符集中的序列值。所以,对于采用ASCLL字符集的编译器,'a'对应的整数值为97(十进...

14040
来自专栏菜鸟前端工程师

JavaScript学习笔记014-this指向0Iterator0Generator

《但是你们可以使劲骂30岁以后还拿5000左右工资的油腻中年人,因为他们不敢辞职》

9730
来自专栏青玉伏案

窥探Swift之基本数据类型

  在上一篇博客“窥探Swift编程之在Playground上尽情的玩耍”中介绍了如何使用Playground来学习Swift语言。本篇博客就使用Playgro...

21150
来自专栏yukong的小专栏

LeetCode 10. Regular Expression MatchingRegular Expression Matching

Implement regular expression matching with support for '.' and '*'.

11030
来自专栏Java帮帮-微信公众号-技术文章全总结

第十一天 面向对象-接口多态【悟空教程】

16740
来自专栏诸葛青云的专栏

简述在C语言中, “字符”与“字符串”之间的区别

在C语言中,“字符”与“字符串”之间,是有区别的。这一篇文章中,我们将介绍一下,在C语言中的“字符”与“字符串”,它们之间的区别。

26230
来自专栏noteless

正确重写hashcode hashcode与equals方法 集合元素如何判断是否相等 集合如何查看是否包含某个元素

相等的两个对象,即equals(Object)方法判断两个对象相等,那么他们必须要有相同的hashcode

22510
来自专栏前端说吧

JS-获取class类名为某个的元素-【getClass】函数封装

32280

扫码关注云+社区

领取腾讯云代金券