C语言中的函数和指针

什么是函数?

函数是程序实现模块化编程的基本单元,一般是完成某一特定功能的语句的集合,它可以提高程序的可读性和可维护性,病可以提高代码重用率。

定义函数:

函数的定义由函数声明和函数体两部分组成。函数声明又可以分为:由函数返回值类型、函数名、参数列表、函数体、以及函数操作符5个部分组成。

函数返回值类型函数名(参数类型1参数名,参数类型1参数名2,.....){

/*函数体*/

变量定义;

函数操作;

return语句;

}

函数声明也可以称为函数原型,定义了函数作为模块化编程的基本单元的借口;函数值类型对应模块出口,函数名对应模块名,参数列表对应模块入口。函数返回值类型也称为函数值类型,是由函数带回的值的类型。

函数名是函数的标识符,其命名规范与其余变量名一致,但是函数名应该能很清晰地反应函数操作的内容。

参数列表是函数的传入参数列表,依次将其放在函数操作符,即小括号中。

函数体,也被称为函数块,是一个放在花括号内的复合语句。它包括三个部分:定义变量部分,函数操作部分,return语句。

函数:代码的模块。

每个程序只有一个主模块(主函数)。

进行组织化的开发:

单元测试,有利于早发现bug

复用性。

Call:函数调用。在一个函数里,使用另外函数的功能。调用者&被调函数。

输入数据:0个或多个。函数参数。

输出数据:最多有一个。返回值。

函数头:返回值类型函数名(函数参数声明)

{

//函数体

}

使用函数名的三个地方:

函数声明(函数原型),只写函数头,不写函数体,不实现函数。后面有分号。

函数调用。

函数定义(函数实现),包括函数头&函数体。

函数声明的用法:

1.在头文件(.h)里进行函数原型的声明,在.c或.cpp文件里进行函数的实现。

2.在main函数前进行函数原型的声明,在main函数后进行函数的实现。

void:空类型,无类型。用在不需要值的地方。

函数不需要参数时,可以不写参数,也可以括号里写一个void

函数声明时,可以省略参数列表里的参数名,只写参数类型。

向函数传递参数的三种方式:

传值;

传地址(指针);

传引用(C++);

值传递:

传值方式,在函数调用时,把实参值的一份拷贝,赋值给形参。

在被调函数体内,操作和修改的是形参的值,实参的值不受影响。

单向传递。从实参到形参。

默认参数缺省参数:

当函数的某个参数有默认值时,调用时可以不传递实参。如果不传递实参,形参的值就是默认值。如果传递了实参,形参的值就是实参的值。

一旦某个参数有了默认值,那么,它之后的所有参数都得有默认值。函数参数从右到左依次有默认值。

内联函数:

内联函数:用被调函数的函数体代码,替换掉函数调用语句。这个替换是在编译期间发生。

好处:避免函数调用的时间开销,提高运行效率。

代价:增加了内存的空间开销。所以,内联函数要尽量短小。

函数重载(C++特有)

函数重载:两个函数名字一样,参数不一样(参数个数不同、参数类型不同),成为函数重载。

不同的参数列表。

调用重载函数时,编译器会根据实参的类型,找到形参类型与之匹配的那个版本的函数。

如果两个函数仅仅是返回值类型不同,不能称为重载。

指针:

指针就是一种数据类型,用来表示内存地址。使用指针数据类型声明的变量就是指针变量,使用指针变量可以灵活地对内存空间进行灵活地操作。

访问内存的两种方式:

1.直接访问

2.间接访问

指针变量的定义:

数据类型名*指针变量名;

定义指针时,一般将指针操作符放在靠近变量名的位置。

初始化指针变量:

使用指针变量时,也应该在其定义语句中为其需要初始化,否则指针将指向一个不可知的空间。

使用指针变量时,必须明确该指针变量指向的内存空间(变量)。因此,必须对指针变量初始化;如果不能明确设定其指向的对象,就将其初始化为null。

指针与函数:

指针形参:

函数调用时,将实参的值赋给形参。使用指针变量作为函数参数,可以将一个内存空间的地址传递到函数中,可以通过该地址来操作该地址上的内存空间。

地址传递并不是说传递是实参的地址,而是指传递的是一个变量的地址,这个地址仍是实参的值。地址传递实质上仍是值传递。

指针型函数值:

函数的函数返回值也可以使指针型的数据,即地址。返回该类型值时,执行机制与返回其他类型完全相同。

含有指针型函数值的函数的声明一般为:

数据类型*函数名(形参列表);

其中,数据类型和指针操作符组成指针类型。

函数型指针:函数指针就是指向函数的指针。

函数型指针变量赋值时,左值与右值的类型必须完全一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值