初识C语言中的函数(男神翁凯老师MOOC)

什么是函数?

函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值。

可以先想象成数学中的函数:

y=f(x)

例如 求begin到end和的函数定义

void sum(int begin, int end)  // void 为返回类型(不返回任何东西) sum 为函数名 (int begin, int end)为参数表)
{
    int i;
    int sum;
    for(i=0;i<=end;i++){
        sum +=i;
    }
    printf("%d到%d的和是%d\n",begin, end, sum);
}

调用函数

函数名(参数表);

()起到了表示函数调用的重要作用,即使没有参数也要()

参数的值会被按照顺序依次用来初始化函数中的参数

从函数中返回值(单一出口)

int max (int a , int b)
{
    int ret;  if(a>b){  ret=a;  }  else{  ret=b;  }  return ret;}

●return停止函数的执行,并送回一个值

●return;

●return 表达式;

●可以赋值给变量(c=max(a,b);)

●可以再传递给函数(●●●printf("%d\n", max(a,b));)

●甚至可以丢弃返回值

没有返回值的函数

● void 函数名(参数表)

不能使用带值的return

可以没有return

调用的时候不能返回值的赋值

函数先后关系

 void sum(int begin, int end)
{
    int i;
    int sum=0;
    for(i=begin;i<=end;i++){                                        //像这样把sum()写在上面,是因为:C的编译器自上而下顺序分析你的代码
        sum +=i;
    }
    printf("%d到%d的和是%d\n",begin,end,sum);
}
 int main()
{
    sum(1,10);
    sum(20,30);
    sum(35,45);

    return 0;
}
void sum(int begin, int end);//函数的原型声明,原型里可以不写参数的名字,但是一般仍然写上
 int main()
{
    sum(1,10);
    sum(20,30);
    sum(35,45);

    return 0;
}

 void sum(int begin, int end)
{
    int i;
    int sum=0;
    for(i=begin;i<=end;i++){
        sum +=i;
    }
    printf("%d到%d的和是%d\n",begin,end,sum);}

调用函数

●如果函数有参数,调用函数时必须传递给它数量 类型正确的值

●可以传递给函数的值是表达式的结果,这包括

● 字面量               【c=max(10,12);】

●变量                     【c=max(a,b);】

●函数的返回值      【c=max(max(23,45), a);】

●计算的结果         【c=max(23+45,b);】

   类型不匹配?

● 调用函数时给的值与参数的不匹配时C语言传统上最大的漏洞

● 编译器总是悄悄替你把类型转换好,但是这很可能不是你所期望的

● 后续的语言,C++/Java 在这方面很严格

传过去的到底是什么?

void swap(int a, int b);
int main()
{
    int a=5;
    int b=6;
    swap(a,b);
    printf("a=%d b=%d\n",a,b);                        ● 这样的代码能交换a和b的值吗?
    return 0;
}
void swap(int a, int b)
{
    int temp =a;
        a=b;
        b=temp;
}

C语言在调用函数时,永远只能传值给函数

●每个函数都有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系

  本地变量

函数的每一次运行,就产生一个独立的变量空间,在这个空间中的变量,就是函数所独有的,称为本地变量

●定义在函数内部的就是本地变量

●参数也是本地变量

●对于本地变量,生存期和作用域   大括号内———块(函数的块内 语句的块内)

●程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了

●块外面定义的变量在里面仍然有效

●块里面定义了和外面同名的变量则掩盖了外面的

●不能再一个块内定义同名的变量

●本地变量不会被默认初始化

没有参数时

(void)

逗号运算符

● 调用函数时的圆括号里的逗号时标点符号,不是运算符

f(a,b)

f((a,b))

●C语言不允许函数的嵌套定义

 

 

原文地址:https://www.cnblogs.com/zhuxuan1997/p/9389949.html

时间: 2024-08-04 00:37:48

初识C语言中的函数(男神翁凯老师MOOC)的相关文章

想精度高,可以考虑用c语言中的函数gettimeofday

大家好: 在 win32 + bcb 时, 有个 GetTickCount() 返回第统启动到现在的 tick, 单位 ms.请问在 Linux + qt5 怎样实现呢? 如果用 QDateTime , 精度只能到秒,而且运行过程中,如果用户改充了系统时间,就会出错了. 用QElapsedTimer. 想精度高,可以考虑用c语言中的函数gettimeofday,微秒级精度 #include <sys/time.h>int gettimeofday(struct timeval*tv, stru

C语言中的函数以及#include的补充说明

C语言中的函数: 函数的定义,就是一个封装的代码段,每个函数能实现不同的功能 定义函数的目的:将一个常用的共功能封装起来,方便以后调用 什么情况下需要定义函数:添加一个常用的新功能 定义函数的格式: 返回值类型 函数名(形式参数列表) { 函数体: } 形参跟实参: 形式参数:定义函数时函数名后面中的参数,简称形参 实际参数:调用函数式传入的具体数据,简称实参 实参个数必须等于形参个数 函数体内部不能定义和形参一样的变量 如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会

c语言中的函数

函数注意事项在设计中:函数在设计的时候应该尽可能的单一出口或者单一入口,因为它可以让我们更加的容易读取和有关功能的分类. 1.函数的定义:函数一块代码,接受一个或者多个参数,做一件事情,并且返回0个或者多个值. 可以类比:成为数学中的函数,我们输入多个参数并且将会输出相对应的值,这其中的过程就像我们数学中的函数里面处理的过程. 2.函数定义: 返回类型 函数名 (参数,--)  //函数头 { //函数体 } eg:int sum (int first, int second) { return

【C语言学习】C语言中的函数

代码中,函数是为了更好的实现模块化的程序设计.那么函数的本质是什么?函数中定义的变量(全局变量.局部变量.静态变量等)又是怎样存储的?为什么全局变量与局部变量的作用域和生命期不相同?只有更加深入的了解函数,才能解答这些问题! ★函数的本质 函数的本质是一段可执行的机器指令代码,函数名的本质是一个标号,表示函数代码的入口.该标号的值等于内存中存储函数代码的内存空间的首地址. ★变量 ●全局变量 全局变量也就是外部变量,定义在函数的外部.因此它不属于任何一个函数,只属于所在的源文件. ▲初始化 对于

c语言中重要函数

gets函数,从标准输入读取一行文本,一行输入由一串字符组成,以一个换行符结尾: gets函数丢弃换行符,并在该行的末尾存储一个NUL字符(类似'\0'), 然后返回一个非NULL值. 当gets函数被调用但事实上不存在输入行时,它返回NULL值. 注意点:给字符串分配空间加NUL的空间: 格式字符串包含格式指定符(格式代码)以及普通字符,这些普通字符将按照原样打印出来: 但每个格式指定符将使后续参数的值按照它所指定的格式打印. %d 十进制打印: %g 打印浮点值: %o 八进制打印:   %

Go语言中时间函数及定时器的使用

Go语言中时间函数及定时器.休眠等功能的实现和使用,代码如下,有需要的小伙伴直接拿去 package main import ( "time" "fmt" ) func main() { // 设置时区,如果name是""或"UTC",返回UTC: // 如果name是"Local",返回Local: // 否则name应该是IANA时区数据库里有记录的地点名(该数据库记录了地点和对应的时区),如"

C语言中的函数、数组与指针

1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念:  函数是C语言代码的基本组成部分,它是一个小的模块,整个程序由很多个功能独立的模块(函数)组成.这就是程序设计的基本分化方法: (1) 写一个函数的关键: 函数定义:函数的定义是这个函数的实现,函数定义中包含了函数体,函数体中的代码段决定了这个函数的功能: 函数声明:函数声明也称函数原型声明,函数的原型

1、C语言中的函数指针

一 通常的函数调用 1 void MyFun(int x); //此处的申明也可写成:void MyFun( int ); 2 3 int main(int argc, char* argv[]) 4 { 5 MyFun(10); //这里是调用MyFun(10);函数 6 7 return 0; 8 } 9 10 void MyFun(int x) //这里定义一个MyFun函数 11 { 12 printf("%d\n",x); 13 } 这个MyFun函数是一个无返回值的函数,它

策略设计模式与c语言中的函数指针

在C语言中有一个非常重要的概念-函数指针,其最重要的功能是实现回调函数(指函数先在某处注册,而它将在稍后某个需要的时候被调用)在java语言中没有指针的概念,但是可以利用接口和指针实现类似的功能,具体而言,应先定义一个接口,最后把这个实现类的一个对象作为参数传递给调用程序,调用程序通过这个参数来调用指定的函数,从而实现回调函数(这里接口就像是注册的地方,实现类就是“注册人”,当实现类作为形参时,就是在需要的时候) package strateryDemo; import java.util.Ar