C语言-函数和指针

05 函数与指针

本章内容:

¨ 掌握函数概念及函数应用
¨ 会应用C语言的内置函数
¨ 熟练使用C语言中的自定义函数
¨ 理解函数参数及参数的传递方式
¨ 理解指针的概念
¨ 基本掌握指针的用法
¨ 理解指针和数组的关系
¨ 基本掌握指针作为函数参数的用法

一、函数机制的优点

¨使程序变得更简短而清晰
¨有利于程序维护
¨可以提高程序开发的效率
¨提高了代码的重用性

二、C语言中函数类型

常用内置函数:

三、函数定义

函数定义类型:

¨有返回值,有参数;  int add(int a, int b)

¨有返回值,无参数;  int add()

¨无返回值,有参数;  void add(int a, int b)

¨无返回值,无参数;  void add()

四、函数使用

(一)、函数原型说明:

函数原型说明在形式上与函数头部类似,最后加一个分号。原型说明中参数表里的参数名可以不写(只写参数类型)


(二)、函数调用

¨ 通过在程序中使用函数名称,可以执行函数中包含的语句,这称为调用函数
¨ 函数之间允许相互调用,也允许嵌套调用从一个函数调用另一个函数称为函数的嵌套调用
¨ 函数还可以自己调用自己,称为递归调用

(三)、函数的参数

¨ 函数有时要求用户传入数据,这些数据是函数的参数
¨ 函数的参数分为形式参数和实际参数函数定义中声明的参数为形式参数,函数调用时传入的参数为实际参数

函数调用时传参的方式:

¨ 值传递

将实参拷贝一份赋值给形参

主调函数向调用函数传递参数实际上只是将实参的拷贝(即临时副本)传递给了被调用函数,并不是实参本身,这样被调函数不能直接修改主调函数中变量的值,而只能修改其私有的临时副本的值。
¨ 址传递

让形参和实参共享一片内存空间,即内存地址相同

引用传递是将实参地址的拷贝传递给被调用函数,在被调用函数中可以通过地址对其值进行修改。

对引用的操作等于对其制定的对象进行操作,当将实参传递给形参时,形参就指向了实参。

注意:

 1、C语言中实参和形参之间的额数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不能。

2、被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放。

3、不论是“按值传递”还是“按地址(指针)传递”,传递的都是实参的一个拷贝。

(四)、函数值的返回

¨ 函数可以有返回值也可以没有返回值
¨ 当函数有返回值的时候其返回值的类型在函数定义时指定,在函数体内部由return语句进行返回操作
¨ 当函数没有返回值时,用void关键字标识

(五)、变量的作用域

¨变量的有效范围

¨变量的作用域决定了变量在某个程序块中的可访问性

五、指针

(一)、两个关键的运算符:

¨ & 取地址符
int i = 10;    &i;
以上代码片段会得到变量i的地址(指针)
¨ * 指针运算符(间接运算符)
int *p_i;
p_i = &i;
*p_i;
   以上代码将变量i的地址存放在指针变量p_i中,即让指针变p_i指向变量i。最后一句使用了指针运算符*,*p_i其实就是变量i

(二)、 指针变量和变量的指针:

¨用来存放地址的变量称为指针变量
¨变量的指针就是变量的地址
¨指针变量的定义与引用
   int i = 10;  int *p_i;  p_i = &i;
(指针变量)   *p_i = 20;

(三)、指针运算

¨指针的赋值运算:

指针变量之间可以进行赋值运算,指针变量的赋值结果为让两个指针变量指向同一片内存空间

¨指针的算数运算:

指针变量也可以像一般的变量一样进行++运算或加上一个整数的运算,但是指针的算术运算和普通算术运算的含义不同,指针的运算是让指针变量的值加上一个T类型变量所占用的内存大小的值,即使指针移动了一个T型单位变量的位置,指针的算术运算常用来操作数组元素。

¨指针的关系运算符:

指针的关系运算一般只做“==的运算,判断两个指针是否指向同一片内存空间

指针变量作为函数参数

(四)、指针变量作为函数参数

¨函数的参数不仅可以是整型/实型等数据类型指针类型,也能作为函数的参数
¨指针变量作为函数参数,调用时是将实参的地址传递给了形参即传址的调用方式,此时形参和实参共享一片内存空间,当在函数内部改变形参的值时也就改变了实参的值

(五)、指向数组的指针


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值