-
2019-07-23 13:46:02
函数定义的一般形式
1.无参函数
定义无参函数的一般形式如下:
类型说明符 函数名()
{
声明部分
语句
}
类型说明符,指明了本函数的类型,函数的类型实际上是函数返回值的类型。该类型说明符与前面介绍的各种说明符相同。在很多情况下都不要求无参函数有返回值,此时函数类型说明符可以写为void函数名是由用户定义的标识符,函数名后面有一个空括号,其中无参数,但括号不可少。{}中的内容称为函数体。定义一个无参函数hello
Void hello()
{
Printf(“hello mingri!”);
}2.有参函数
定义有参函数的一般形式如下
类型说明符 函数名 ()
{
声明部分
语句
}
在“形式参数表列”中给出的参数称为形式参数,它们可以是各种类型的变量,同时要对这些变量给予类型说明,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。下面定义一个有参函数实现两数相加求和,并将求出的和作为返回值返回。Int add(int x,int y)
{
Int sum;
Sum =x+y;
Return sum;
}第一行说明add函数是一个整形函数,其返回的函数值是一个整数。形参为x,y,这里也分别对x,y进行了类型说明,均为基本整型。X和y的具体值是由主调函数在调用该函数时传送过来的。在{}中的函数体内,除形参外还定义了一个变量sum,该变量仍为基本整型。Add函数体中的return语句是把sum的值作为函数的值返回给主调函数。有返回值函数中至少应有一条return语句。
3.空函数
定义空函数的一般形式如下:
类型说明符 函数名()
{}空函数就是什么也不做,没有什么实际的作用。空函数既然没有什么实际功能,那为什么要存在呢?原因是空函数所处的位置是要放一个函数的,只是这个函数现在还未编好,用这个空函数先占一个位置,以后用一个编好的函数来取代它
更多相关内容 -
C语言函数 -C语言函数定义的语法格式
2021-05-21 05:34:18C语言程序是由多个零件组合而成...C语言函数是什么在前面的学习中,我们知道在 main( ) 函数中可以通过 printf( ) 函数实现屏幕输出显示的功能,通过 scanf( ) 函数实现读取键盘输入信息的功能。另外,我们还可以使...C语言程序是由多个零件组合而成的,而函数就是最主要的组合零件。C语言程序的主体部分就是一个 main( ) 函数,它在 C语言程序中是必不可少的,每一个 C 程序都首先从 main( ) 函数开始执行。
C语言函数是什么
在前面的学习中,我们知道在 main( ) 函数中可以通过 printf( ) 函数实现屏幕输出显示的功能,通过 scanf( ) 函数实现读取键盘输入信息的功能。另外,我们还可以使用 abs(x)、sqrt(x) 等函数实现各种数学运算功能。
这些都是由 C语言提供的库函数,我们在编程过程中直接拿来使用就可以了,不过在使用之前需要在程序开头部分,用#include引入包含这些库函数的头文件。
此外,我们可以根据需要自己创建各种函数,称为自定义函数。
而 C语言程序基本上就是用这些函数像搭积木一样搭建起来的(见图 1)。
图 1:像搭积木一样创建 C语言程序
总结:函数可以理解为能够执行特定功能的“魔法盒”,将多个处理步骤集中在一起并且可能重复使用时可以使用函数。
C语言函数定义
函数的定义由多个部分构成(见图 2)。其一般格式如下:
返回类型 函数名 (形参声明) //函数头
{
函数体; //一条或多条 C 语句
}
下面的代码定义了一个函数 Max2,其功能是接收两个整数,返回较大的值:
int Max2 ( int a, int b )
{
if(a>b)
return a;
else
return b;
}
函数头部分包含函数的返回类型、函数名以及一个或多个形式参数(简称形参)。它指出了该函数的使用方法(函数调用的形式)。
一般函数都会返回一个值(return 后面跟随的值),这个返回值的数据类型,就是函数的返回类型。也有一些函数没有返回值,只是执行一些具体的操作(比如打印输出等),这些没有返回值的函数在定义时其返回类型为 void 型(见图 2)。
图 2:函数的定义
函数头部分中用小括号括起来的,是函数需要接收的变量的声明,即形式参数(简称形参)声明,多个形参用逗号分隔。也有不接收任何形参的函数,此时,在小括号中需写入 void。
函数体部分是用花括号{ }括起来的复合语句。仅在某函数内部使用的变量,应在该函数的函数体中声明和使用。
return 表示从被调函数返回到主函数继续执行,它后面跟随的就是函数返回值。
知识点总结
返回类型、函数名、形参统称为函数头;
函数由返回类型、函数名、形参和函数体四部分构成;
形参是函数定义时声明的用于接收数据(值)的特定变量。
-
C语言基础:函数的定义与调用
2021-05-22 05:42:31在前面内容中我们调用了一个标准C的库函数,叫printf,那么如果我们想自己定义函数应该如何来编写程序呢?定义函数又有什么好处呢?因为我们在教材中提及到的例子主要目的是为了让读者对程序的原理有一定的了解,...在前面内容中我们调用了一个标准C的库函数,叫printf,那么如果我们想自己定义函数应该如何来编写程序呢?定义函数又有什么好处呢?因为我们在教材中提及到的例子主要目的是为了让读者对程序的原理有一定的了解,所以设定的例子程序通常都比较简单,基本上在几行到十几行,多一点的也就三五十行代而已,但是在真正的编程工作中,我们需要完成的代码将非常大,所以将代码合理的分为不同的区块是很有必要的,每一个区块具有相对独立的功能,并为其它程序提供对外调用的参数和返回值,这样由多个区域组成的程序才会让程序阅读者更方便的理解程序设计的理念。并可以通过函数让功能被封装起来,使得一个功能可以在不同的情况下被其它功能调用,函数的概念就是这样产生的。我们来看看函数的定义与使用。
一、定义函数
定义一个函数我们需要确定三部分内容:
1.函数的返回值类型
2.函数的名称
3.函数的参数
确定了以上内容后就可以定义一个特有功能的函数了:
int wrongplus(int a, int b)
{
a = a + 1;
b = b + 1;
return a + b;
}
例如上面代码中就定义了一个返回值为int类型的函数,其函数名为wrongplus,一对小括号中的内容为这个函数的参数,也就是说这个函数有两个传入参数int a和int b。在函数体内,分别让a在原来的基础上加1,让b在原来的基础上加1,然后使用return关键字返回a + b的和。如果a的值是2,而b的值是3,那么这个函数的返回值则是7。
如果我们想定义一个没有返回值类型的函数则需要设计其返回值类型为void,同样,如果我们想定义一个没有参数的函数可以将其参数定义为void,通常如果一个函数没有参数可以在函数名后的小括号里什么都不写,例如:
void function1(void)
{
}
void function2()
{
}
二、函数调用与声明
我们定义了这样一个wrongplus()的函数,那么如何来让其它功能使用它呢?我们看下面程序:
#include main()
{
int a = 2, b = 3;
int c;
int wrongplus(int a, int b);
c = wrongplus(a, b);
printf("%d + %d = %d\n",a, b, c);
}
int wrongplus(int a, int b)
{
a = a + 1;
b = b + 1;
return a + b;
}
2 + 3 = 7
如果函数的定义是在调用函数的后面(下面)则需要在调用之前声明函数的定义,否则不需要事先声明。声明的意思是告诉编译器,这个函数的返回值类型、函数名和参数。
我们在调用一个函数时,需要向这个函数传其需要的参数,例如a和b这两个变量,并可以指定另一个变量用于接收这个函数执行后的返回值,比如变量c就接收了函数wrongplus()的返回值,结果为7。但是我们看到程序的运行结果是2 + 3 = 7,也就是说,执行了函数wrongplus()后,我们虽然对函数内的参数变量分别加1,但主函数main中的a和b的值并没有发生变化。
三、实参与形参
当我们调用函数时,对其传入的参数和函数体内接收到的参数其实并不是同一个变量。调用函数时向函数传入的参数称作实际参数,简称实参,而函数体内部用于接收外部调用时传入的参数的参数称为形式参数,简称形参。
例如上面例子中,在main函数中定义的变量int a和int b,在调用wrongplus(a, b);时这两变量是实参,也就是将这两个变量的值2和3传入到函数内部。而在函数wrongplus()的函数体内,用于接收这两个参数时的int a和int b则是形参,这是函数体内部额外的两个变量,用于接收2和3这两个值,这两个变量并不是main函数中定义的a和b 。
在wrongplus()函数体内,对形参做a = a + 1;和b = b + 1;操作,其实只影响到了函数体内部的这两个变量,而并未影响到main函数中的变量a和b的值。所以,在wrongplus()函数体内的a和b的值为3和4,函数运行结果的返回值为7,而在main函数中的a和b两变量的值仍然是2和3,所以printf()函数显示出的结果则是 2 + 3 = 7 。
欢迎关注公众号:编程外星人
-
python定义函数时默认参数注意事项
2020-12-14 07:11:38如果在调用一个函数时,没有传递默认参数,则函数内的默认参数是对函数的默认参数属性__defaults__的引用,如def func(arg1=[]): arg1.append(2)调用func时如果没有传参,上面的arg1就是func.__defaults__[0]的引用没...如果在调用一个函数时,没有传递默认参数,则函数内的默认参数是对函数的默认参数属性__defaults__的引用,
如
def func(arg1=[]): arg1.append(2)
调用func时如果没有传参,上面的arg1就是func.__defaults__[0]的引用
没传递默认参数,会发生以下情况
由于func.__defaults__[0]是可变类型,导致每一次调用func,arg1都会对func.__defaults__[0]进行操作(func.__defaults__[0].append(2),
这样在有些情况下会导致逻辑出错的,例如
def func(arg1=[]): if(arg1==[]): print'arg1 is empty' arg1.append(1) else: print'arg1 is not empty'print arg1 func() # arg1 is empty
func() #arg1 is not empty [1]
第二次调用func的时候,并没有传递参数arg1,但是第一次调用时,函数内部已经修改了__defaults__
这是为啥呢?为何第二次调用不重置arg1为[]?
因为
Python的默认参数只会在函数定义时被确定,而不是每次调用时重新确定,所以,一旦在函数中修改了默认参数,则再随后的调用中都会生效
由于有这个特性,在定义函数时,如果默认参数使用可变的对象类型,如上例子,则很可能导致逻辑出错,
所以,如不是特别需要,则不允许在函数内部对默认参数引用的func.__defaults__属性进行修改,如何能让一个对象不被修改?那就是在操作arg1前取消它对__defaults__的引用
以上例子改动一下
def func(arg1=[]): if(arg1==[]): print'arg1 is empty' arg1=[] arg1.append(1) else: print'arg1 is not empty'print arg1
上例中,在用户没有传递默认参数arg1时,函数内部会给arg1变量重新赋值,让arg1去引用我们想用的对象[],这样arg1就不会修改func.__defaults__了
如果是默认参数是有值的情况,可以这样操作
def func(arg1=[1,2,3]): if(arg1==[1,2,3]): print'is [1,2,3]' arg1=[1,2,3] #重点是这里,取消arg1对__defaults__属性的引用,防止arg1修改__defaults__ arg1.append(1) else: print'not [1,2,3]'print arg1
以上太啰嗦,下例模仿了python官方例子,使用不可变类型(例如None)作为默认参数,逻辑简洁,推荐使用
def append_to(element, to=None): #默认参数to定义时为None,但函数逻辑中进行进一步重新赋值为想使用的默认值
if to is None: to = [1,2,3] to.append(element) return to
总结:
防止默认参数修改函数的__defaults__,需要:
1.定义默认参数时,最好使用不可变类型.
2.如果默认参数一定要使用可变类型,那就在函数内部对默认参数重新赋值为可变类型的具体值.
python定义函数时的参数&;调用函数时的传参
一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...
python定义函数时的默认返回值
python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None, 即隐式返回语句: return None 执行如下代码 def now(): prin ...
python中函数的默认参数陷阱问题
其实也不能说是陷阱,只是一个不容易注意到的地方,尤其是有其他java/c++类编程语言经验的人员,这里涉及到python的一个特点,所以笔者说是陷阱只是一个噱头而已. def test(item, b ...
python定义函数时,形参前加*和**的意义
转发:https://blog.csdn.net/qq_34806812/article/details/82017839 1.加*表示接受一个tuple类型(元组),如: 2.加**表示接受一个di ...
Python 中函数的 收集参数 机制
定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数.返回结果是一个元组. 传递零个参数时函数并不报错,而是返回一个空元组.但以上这种方法也有局限性,它不能收集关键字参数. 对关 ...
Python函数的默认参数的设计【原创】
在Python教程里,针对默认参数,给了一个“重要警告”的例子: def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2)) print( ...
在python函数中默认参数的一些坑
一.默认参数 python为了简化函数的调用,提供了默认参数机制: 这样在调用pow函数时,就可以省略最后一个参数不写: 在定义有默认参数的函数时,需要注意以下: 必选参数必须在前面,默认参数在后: ...
对C++虚函数使用默认参数的注意事项
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/ 备忘一个关于虚函数的小知识点 使用多态调用一个类型中定义的虚函数时,编译器会根据指针的当前 ...
C++中函数的默认参数
使用方法: (1)在函数声明或定义时,直接对参数赋值,该参数就是默认参数. (2)在函数调用时,省略部分或全部参数,这时就会使用默认参数进行代替. 注意事项: (1)一般在声明函数是设置默认参数. 如 ...
随机推荐
重写AgileEAS.NET SOA 中间件平台账号密码的加密算法
一.平台简介 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适 ...
用Access作为后台数据库支撑。
/// /// 读取Excel文档 /// /// 文件名称&l ...
使用C# WinForm制作 员工打卡项目 -- S2 2.3
新建一个员工类,存储员工的信息 新建一个List<>集合,并在load事件中实例化三个员工对象 DataGridView绑定数据源,可以显示出数据 点击查询按钮,查询工号等同于输入的数的员 ...
[Unity3D]开发视图中的标记 - Gizmos
这个类用来做自己的组件很不错,比如下面这个图的路径点,他其实是个Empty Object,可以自己加脚本让他带上标记.官方解释还可以用来做帮助提示的-.- 大游戏场景的制作时候,你可以用这个在地图上写 ...
c#+ArcEngine中的IGroupLayer的用法
转自羊子雄起原文c#+ArcEngine中的IGroupLayer的用法 在AE开发中,我们知道axMapControl.LayerCount能获取图层的数量,但是这种方法不能获取到图层组里面的图层, ...
EDK II代码实例之Variable
EFI_STATUS Status = EFI_SUCCESS; EFI_GUID OemOSTypeGuid = {0xd06a0bc7, 0x9feb, 0x4cbb, 0xbd, 0x78, 0 ...
wpf 实现 css3 中 boxshadow inset 效果
using System; using System.Linq; using System.Windows; using System.Windows.Controls; using System.W ...
day10 参数args kwargs 作用域
函数参数/作用域/args/kwargs 1.参数 1.1参数基本知识 任意个数 任意类型 func("1",True) 1.2位置传参(调用函数并传入参数) def func(a ...
Django之模板1
Django模板 一.变量(只需要记住两种特殊符号) {{ }} 和{% %} {{ }}表示变量,在模板渲染的时候替换成值,变量名由字母数字和下划线组成. {% %}表示逻辑相关的操作. 点(.)在 ...
windows下搭建voip服务器
软件: yate-6.0.0-1-setup.exe 服务端,里面也有个客户端 eyeBeam.exe 客户端 步骤: 失败....
-
C++友元函数基本用法(声明、定义、调用)
2019-07-03 20:06:34本文主要总结一个C++中基本的友元函数用法,包括友元函数声明和定义、一个应用简单例子和编译结果,友元函数特性总结,下面是具体讲述。 1.1友元函数声明和定义 首先友元函数是声明在类中的,作用是可以反问该类的... -
python def 定义函数(一)
2017-04-22 11:43:59一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程...在Python中,函数定义的基本形式如下: def function(params): somthing return values 在这里说明几点: (1)在Python中采用 -
Python定义函数的三种形式
2020-09-15 20:55:14定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名 在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。 如果函数体代码逻辑不需要依赖外部传入的值... -
定义函数的三种形式
2020-03-22 15:00:19文章目录定义函数的三种形式一、无参函数二、有参函数三、空函数 定义函数的三种形式 一、无参函数 定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名 在函数阶段括号内没有参数,称为无参函数。... -
python基本语法def定义一个函数
2020-03-24 13:36:381. def定义一个函数 功能:定义一个实现自己所需功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义... -
Python中,定义函数的关键字是____._学小易找答案
2020-12-08 14:21:10【填空题】下列程序输出的结果为...【判断题】定义函数时,即使该函数不需要接收任何参数,也必须保留一堆空的圆括号来表示这是一个函数。【填空题】根 据滴定方式、滴定条件和选用指示剂的不同,银量法划分为 、 、 。... -
81. 定义函数时的规则?
2020-04-07 13:18:10函数定义的简单规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间 函数内容以冒号起始,并且缩进 若有返回值,Return[expression] 结束函数;不带return... -
PHP函数的定义
2019-04-11 14:04:17函数就是功能。封装一段用于完成特定功能的代码。调用一个函数就是在调用一个功能。 内置函数: PHP函数中有一些内置函数,这些函数是不能随便进行更改的; strtoupper() 和 strtolower()是两个内置的函数,用于对... -
python 函数
2021-02-10 22:19:15定义函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段函数能提高应用的模块性,和代码的重复利用率函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可面向对象:对函数... -
函数调用格式
2019-07-22 10:05:07函数调用格式: 代码: //eg1: #include<stdio.h> void ppp(); //声明 int main() { ppp(); //有分号 return 0; } void ppp() { printf("aaa"); } //eg:2. #include <stdio.h> void ppp() //定义... -
C++类的成员函数(在类外定义成员函数)
2021-04-25 21:37:04类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中。它可以被指定为private(私有的... -
MATLAB中此上下文中不允许出现函数定义,急求~
2021-04-18 17:27:29点击查看MATLAB中此上下文中不允许出现函数定义,急求~具体信息答:从你讲的问题,虽然没讲太清楚,但我推测,你可能写了个脚本程序文件,其中定义了子函数,在运行时就弹出了这个提示。一般情况下,在函数文件中... -
请教各位怎样用matlab定义一个分段函数MATLAB分段函数
2020-12-19 20:57:09请教各位怎样用matlab定义一个分段函数 ...语句定义不同的分支推荐方法:使用逻辑表达式将不同分支写成一个完整的函数表达式下面进行举例说明:在matlab中定义如下分段函数1、常规方法:123456789functiony=fun(x... -
C语言结构体中定义函数指针详解
2019-04-10 11:49:08C语言结构体中定义函数指针详解 -
python中函数的定义以及如何编写一个函数
2019-06-30 18:06:521.函数的定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段 函数能提高应用的模块性,和代码的重复利用率 Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户... -
爬虫第二课:定义函数
2019-01-10 13:30:08定义函数 定义函数就是封装一部分代码,设置参数,输入相应的参数就会返回相应的结果。如果一个爬虫的代码超过五十行,那么如果不定义函数,每一行代码就会看起来很凌乱,如果定义一个函数的话,界面的结构就会很... -
Python函数(函数定义与使用,函数参数,函数的返回值)(学习笔记)
2020-06-12 20:20:00这里写目录标题一、函数的定义与使用1)函数的定义:2)函数的调用过程3)lambda函数二、函数的参数传递1)可选参数传递2)参数传递的两种方式三、函数的返回值 一、函数的定义与使用 1)函数的定义: 1、函数是一... -
高数——多元函数的定义及极限
2019-10-21 10:51:33之前我们学习的导数、微分和积分都是针对一元函数的,也就是函数只依赖一个变量,但是在我们今后遇到的实际...和一元函数一样,二元函数也是有定义域和值域的,一元函数的定义域是 轴上一个“线段”上的点的集合,而... -
C#函数的定义和使用
2018-10-21 08:04:36函数的定义,一般写在类(class) 下面。 using System; namespace ConsoleApp1 { class Program { static void Write()//函数的定义,void 表示无返回值,Write方法名 { //函数体也叫方法体,这里写... -
C语言函数定义和函数调用
2020-04-01 19:05:47函数是C源程序的基本模块,程序的许多功能是通过对 函数模块的调用来实现的,学会编写和调用函数可以提高编程效率。 函数的定义通常包含以下内容: 类型 函数名(形参表说明) /函数首部/ { 说明语句 /函数体/ 执行语句 }... -
常见函数的定义域
2021-03-10 19:43:22------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------..... -
函数嵌套的定义与调用:
2020-08-26 20:16:271,函数嵌套 (1)函数嵌套调用:在函数内部又调用其他函数。 def index(): print(‘index’) def func(): index() # 在定义 func 函数的...(2)函数嵌套定义:在函数内部又定义其他函数。 def outer(): x = 1 pri -
定义Python函数时,如果函数中没有return语句,则默认返回空值None。
2020-12-06 02:30:00真题5年,定义坏账比例损失式是的公确定。和作关于地位用经济法的,函数函数回空正确下列说法的是。)之行政听证外处罚除涉及(,果认返行都应当公开举,政处规定《行我国》的依据罚法。者不责任赔偿生产的情承担况...