第1章C的初步知识

合集下载

C语言全国计算机二级等级考试教程第一二章(章节带习题)

C语言全国计算机二级等级考试教程第一二章(章节带习题)
10
2.2 标识符、常量和变量
2.2.3 符号常量
在C语言中,可以用一个符号名来代表一个常量,称为符号常
量。但是这个符号名必须在程序中用(#define)进行特别的“
指定"。 例2.2 计算圆面积和周长,此程序中将如何教大家使用符号常量。
#include “stdio.h” /*包含头文件*/
#define PI 3.14159 /*定义符号常量,符号常量名为PI,用PI来代表3.14159*/
main()
/*主函数,程序的入口*/
{double r,s,l;
/*声明部分,定义了3实型个变量*/
r
r=5.0;
/*给变量r赋值*/
函 s=PI*r*r;
数 体
l=2*PI*r;
/*计算圆的面积*/ /*计算圆的周长*/
s
printf(“s=%f,l=%f\n”,s,l/)*;分别圆的面积和周长*/
/*给变量b赋值*/
数 体
area=a*b;
/*将a*b的结果赋值给变量area*/
printf(“a=%f,b=%f,area=%f\n”,a,b,area/)*;分别输出矩形的两条边长和面积*/
1.2
}
3.6
a=1.200000,b=3.600000,area=4.320000
4.32
注意:
1. C程序由函数组成,一个程序必须有一个且只能有一个主函数(main),C程
a
b
1.5000002.500000 2.5000003.500000
a b
内存空间
2.在程序中,声明变量就是在计算机内存中申请了某个内存单元。对变量 进行赋值,实质上就是把数据存入该变量所代表的存储单元中。

C语言程序设计第1至8章复习知识点总结

C语言程序设计第1至8章复习知识点总结

printf("max=%d\n",c);
/*输出c的值*/
}
int max(int x, int y) {
int z; if (x>y) z=x; else z=y; return (z); }
/*定义max函数,函数值为整型,x、y为形参,整型*/
/*定义内部变量z*/ /*比较x,y的大小,如果x大于y,则执行z=x*/ /*否则执行z=y*/ /*将z的值返回,通过max带回调用处*/
整理课件
c语言第一至八章总结
2 基本数据类型
1、整型
2、实型
3、字符型
实型
小数形式 :3.14 指数形式:3.14*103 =3.14e003
标准化指数形式:3.14*103
对应 只有一个大于0的整数
字符
ASCII表
例:以下选项中,不能作为合法常量的是( B ) A) 1.234e04 B)1.234e0.4 C) 1.234e+4 D)1.234e0
long
注意:每一步运算都要先
unsigned
转换为同一类型 例:

int a=3,b=4;
int
char,short float c=3.0/4,d=b/a;
printf("%f,%f",c,d);
整理课件
c语言第一至八章总结
数据类型的强制转换
例2.8强制类型转换 #include<stdio.h> void main() {
程序设计语言 机器语言 机器语言
可执行
不可以
不可以
可以
文件名后缀
.c 整理课.o件bj
.exe

C语言程序设计习题一

C语言程序设计习题一

A)8 40 B)10 40 C)10,4 D)8,4 16.下面程序的输出结果是 。 main() {int i,j; i=16;j=(i++)+i;printf(“%d”,j); i=15;printf(“%d %d”,++i,i); } A)32 16 15 B)33 15 15 C)34 15 16 D)34 16 15 17.表达式(int)2.1416的值为 。 A)2 B)2.1 C)0 D)3 18.表达式(double)(20/3)的值为 。 A)6 B)6.0 C)2 D)3 19. 若有以下定义, 则正确的赋值语句为 。 int a, b ; float x; A)a=1, b=2, B)b++; C)a=b=5 D)b= int (x) ; 20. .C语言规定标识符由 等字符组成. A)字母 数字 下划线 B)中划线 字母 数字 C)字母 数字 逗号 D)字母 下划线 中划线 21. 若有如下定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式: (float)(a+b)/2+(int)x%(int)y的值是 。 A)2.500000 B)3.500000 C)4.500000 D)5.000000 22. 有如下语句: printf(“%s,%5.3s\n”,“COMPUTER”,“COMPUTER”);执行语句后的最终 结果为 。 A)COMPUTER ,CMP . B)COMPUTER, CMP. C)COMPU, CMP. D)COMPU, CMP 23. 已知ch是字符型变量,下面不正确的赋值语句是: 。 A)ch=‘\0’ B)ch=‘a+b’ C)ch=‘7’+‘9’ D)ch=7+9 24. 若x和y都为float型变量,且x=3.6, y=5.8 执行下列语句后输出结 果为: 。 printf(“%f”,(x,y));

第1章 C语言基础知识

第1章 C语言基础知识

第一章C语言基础知识一,选择题1 答案是AA正确课本第2页11行B {}可以作为复合语句的标志C main 函数不是用户命名的D 分号是语句结束的标志,肯定是语句的一部分做这个题目需要对书上的概念透彻的理解2 答案是AA 错误课本第4页关于用户标识符是这样介绍的---命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。

这个题目考察用户标识符3 答案是B用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母,数字,下划线其中一种。

这个题目考察用户标识符的概念。

4 答案是Bdefine 是预定义标识符,而预定义标识符可以是用户标识符,所以define可以是用户标识,if 是关键字,而关键字不能是用户标识符,所以if不可以是用户标识符5 答案是Dsizeof 是关键字,参照附录二注:6--13 考察用户标识符概念6 答案是DD答案以数字2开头了,不符合标识符定义7 答案是CC答案以数字开头了8 答案是Dint 是关键字9 答案是B答案A 是关键字,答案C是以数字开头了,不符合概念,答案D出现了小数点10 答案是A答案A出现了小数点11 答案是C答案C 以数字开头了12 答案是AB答案中float 是关键字,C答案中3c以数字3开头了,D答案中-5d中- 不属于字母,数字,下划线中一种13 答案是AB答案中-max中-错误,C答案中3COM以字母3开头了,D答案中int 是关键字,不是用户标识符14 答案是BA答案中15. 后面不应该有点,C答案中出现了逗号,D中字母B有问题15 答案是B16 答案是BB中出现了8,而八进制只能有0到7组成17 答案是D答案D中开头是0不是o18 答案是C答案A中E后面是整数,0.5是小数答案B 中E后面不能为空答案D中E前面不能为空本题目考察指数的表示形式19 答案是C答案A中2.0有问题,不能为小数形式答案B中E前面不能为空答案D中E后面不能为空本题目考察指数的表示形式20 答案是AB中八进制中不能出现数字8,C中e后面不能是小数,D中e后面不能为空21 答案是BB中0.4是小数,不正确22 答案是CC中0.5是小数,不正确23 答案是D3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本题目考察算术运算符,需要注意整数除以整数结果只能是整数24 答案是D%不能用于实型的计算25 答案是DD答案中$不属于字母,数字,下划线26 答案是AA答案是逗号表达式,B答案中x+1=y是赋值表达式,左边只能是变量,而这里是x=1, 同理答案C中x+10也是错误的,在D答案中,考察的是强制类型转换,正确的是(double)x/1027 答案是A本题考察的是注释需要注意的地方,具体解答见课本第2页中间部分28 答案是B答案A中n2没有定义,答案C中在定义f之前不能使用它,答案D 中E后面必须是整数29 答案是C考察的是强制类型转换,正确的是k%(int)f30 答案是D解题方法是要抓住++m,--n,--m,表达式的值是变量变化之后的值,而n--表达式的值是变量n变化之前的值31 答案是B本题目考察的是负整数与无符号正整数在计算机中存放的格式的一样的,但表示的不同的两个数32 答案是CA答案中%运算对象不能为实型,26.8错误,B答案中考察的赋值运算符,赋值运算符左边必须是变量,所以赋值运算符左边1+2错误,同理答案D错误33 答案是C增量运算符的运算对象只能是变量,而在C答案中++(i+1)中,i+1是表达式34 答案是B本题目考察的是整数除以整数结果是整数,在B答案中1/2结果是0,导致整个表达式的值是0,明显是错误的35 答案是D36 答案是A本题目主要考察n++表达式的值是n变化之前的值,然后使n的值增加137 答案是Bc=a/b+0.4 c=8/5+0.4 c=1+0.4 c=1.4 因为c 是int 型的,所以n的值是1 ,做此题目需要仔细阅读题目38 答案是D(int)a+b/b=(int)5.5+2.5/2.5=5+1.000000=b=6.000000同样a,b的类型是double型的39答案是D40 D41 D42 A二,填空题1 位、0或123 84 八进制、十进制、十六进制5 课本第8页整型变量和第11页实型变量的介绍6 5+3.6/2=5+1.8=6.87 a++表达式的值是a变化之前的值,当然a本身增加了18 把10赋给变量B。

C语言各章节知识点总结

C语言各章节知识点总结

C语⾔各章节知识点总结第⼀部分“C语⾔基础知识”知识点1、C程序的基本结构C程序是由函数构成的。

每个程序由⼀个或多个函数组成,其中必须有且仅有⼀个主函数main( )。

main函数是⼀个可执⾏C语⾔程序的⼊⼝和正常出⼝,⽽不论其在整个程序中书写的位置如何。

在C语⾔中,⼤⼩写字母是有区别的。

(例如习惯使⽤⼩写字母定义变量,⽤⼤写字母定义常量)。

C程序的注释有两种⽅法,⼀种是⾏注释,使⽤“//”;另外⼀种是块注释,使⽤“/* */”,注意“/*”与“*/”不能嵌套使⽤。

C语⾔书写较为灵活,但是提倡采⽤缩进格式进⾏程序书写,以体现语句之间的层次感。

C程序每条语句以“分号”作为结束标志。

以下⼏种情况不得使⽤分号:(1)所定义的函数名称后不得使⽤分号;(2) if…else…语句是⼀个整体,中间不能使⽤分号将其分隔开;(3)预编译命令后不能使⽤分号。

2、C程序开发步骤C语⾔在计算机上的开发过程主要由以下四个步骤组成:第⼀步:编辑。

⽣成后缀名为“.c”的源⽂件第⼆步:编译。

⽣成后缀名为“.obj”的⽬标⽂件第三步:连接。

⽣成后缀名为“.exe”的可执⾏⽂件第四步:运⾏。

3、VC++6.0开发⼯具的使⽤按下功能键Ctrl+F7编译程序;按下功能键F7连接程序;按下功能键Ctrl+F5运⾏程序;若程序在编译和连接过程中有语法错误,则按下功能键F4定位错误所在⾏并根据错误提⽰信息改正错误(原则是先解决error,再解决warning)。

4、C语⾔中标识符的命名规则标识符由字母、数字、下划线组成;规定第⼀个字符必须为字母或下划线。

标识符定义的变量名、函数名、常量名等最好做到“见名知义”;⼤⼩写代表不同含义;不能使⽤关键字;最好不要与C语⾔的库函数同名。

5、C语⾔的数据类型C语⾔的数据类型由基本类型和复杂类型构成。

其中基本数据类型包括字符型(char)、整型(int,short,long)、实型(float,double);复杂数据类型包括指针类型、数组、结构体、联合体。

第1章 C语言基本知识

第1章 C语言基本知识

第一章C语言基本知识一、C语言的产生和发展1、C语言的发展源于人们希望用高级语言编写操作系统。

(C-BCPL第二字母)ALGOL60(高级语言)->CPL(硬件支持)- BCPC->B->C->标准C-> ANSI C -> ISO C2、语言既具有高级语言特性,又具有低级语言特性-中级语言。

二、C语言的特点1、语言简明、紧凑、使用方便、灵活。

2、运算符丰富。

3、数据结构丰富,具有现代化语言的各种数据结构。

4、具有结构化的控制语句。

5、语法限制不太严格,程序设计自由度大。

6、C语言允许直接访问物理地址,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

7、生成目标代码质量高,程序执行效率高。

8、用C语言写的程序可移植性好。

三、C程序的基本规则1、C程序由函数构成。

(亦称为函数语言。

)2、C程序中每条语句都用一个分号结尾,分号是C程序语句的必要组成部分,语句最后的分号不能省略。

3、每个C程序都有一个主函数(main()),且只有一个主函数。

并且程序是从主函数开始执行的。

4、调用C语言的标准函数通常要在程序开头使用包含命令include,C程序中的命令不用分号结尾。

5、C程序中的变量必须先定义,后使用。

6、C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写,同一字母的大小写被作为两个不同的字符。

7、C程序中可以用“/*……*/”的形式加注释。

8、C程序书写格式自由,一行内可以写几条语句,一条语句可以写在多行。

9.一个函数包含两个部分:(1)函数的说明部分。

包括函数名,函数类型,函数属性,函数参数名等。

如:int max(x,y)int x,y;函数名后必须跟一对圆括弧,函数参数可以没有,如:main( )。

(2)函数体。

函数说明部分下的大括弧,如果一个函数内有多个括弧,则最外一层为函数体范围。

四、字符集字符集是高级语言的编译系统所能识别的字母、数字和特殊符号。

大学课程《C语言程序设计基础》PPT课件:第1章

大学课程《C语言程序设计基础》PPT课件:第1章

第1章 C语言程序设计概述
机器语言是计算机能够直接识别的语言,它是一组二进 制编码指令。在计算机应用初期,人们用机器语言编写程序。 但是机器语言是冗长的二进制代码,难理解、难记忆、难编 程,只有少数计算机专业人员才会使用。随着计算机应用技 术的发展,计算机语言一直朝着“人性化”的方向发展,先 后出现了汇编语言和不同种类的高级语言。
第1章 C语言程序设计概述
1.2.1 数据结构与算法 数据结构与算法具有密切的联系。数据结构是加工对象,
算法则是对数据结构加工处理的方法。不同的数据结构可能 需要采取不同的算法,不同的算法可以对不同的数据进行加 工处理。
1.数据结构
何谓数据结构?数据结构在程序中如何表示?
数据结构指的是数据的组织形式,例如,字符数组、方 程组系数矩阵、人员的基本信息表、反映部门组织机构关系 的树形图、反映网络结构及信息的网状图等都是不同的数据 结构。
组织和存储数据的目的是能被计算机处理,即对数据施 加各种运算。因此,可以在逻辑结构上定义运算集合,而在 存储结构上实现这些运算。
第1章 C语言程序设计概述
2.算法
何谓算法?算法如何表示?
所谓算法,是解决某一问题所采取的方法和步骤。程序 设计中的算法把解决问题的每一步骤具体化为计算机的操作, 即算法解决计算机在什么情况下应该“做什么”和“怎样做” 的问题。
第1章 C语言程序设计概述
高级语言的种类很多,不同的语言各有不同的特点与使 用场合,但从原理上看,各种语言都包含一些相同的功能和 结构。对初学者来说,只要选择有代表性的语言,掌握了程 序设计语言的规律和内在功能结构,就很容易学习和应用其 他语言。现在一般都把C语言作为程序设计的入门语言。
第1章 C语言程序设计概述

第一章-C语言基础知识

第一章-C语言基础知识

第一章C语言基础知识(C语言概述、算法、数据类型运算符表达式、位运算)一、判断题R1.在C语言中,逗号运算符的优先级最低。

2.在C语言可执行程序的开始执行点是程序中第一个函数。

3.“5ch”是合法的变量名。

R4.C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。

5.当输入数据时,必须指明变量的地址,如scanf("%f",&f)N6.表达式i++与++i在任何场合功能完全相同。

7.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。

Float a; int b=1;a=b;R8.C语言程序中,语句以逗号结尾。

()9.在 C 程序中,APH 和aph 代表不同的变量。

( )10. a-=7等价于a=a-7。

( )N11. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出按原字符长从左向右全部输出。

( )12.如果x>y为真或a<b为真,表达式(x>y)&&(a<b)就为真。

()13.C语言程序的变量必须先定义再使用。

( )14.若a和b是同类型变量,在执行了赋值语句a=b;后b中的值将放入a中,b中的值将丢失。

( )15.程序的执行总是从main函数开始,在程序的最后一个函数中结束。

( )N16.变量的三个属性是指变量的名字、变量的值和变量在内存中的地址。

()17. 运算符优先顺序:赋值运算符<逻辑运算符<关系运算符<算术运算符()18.对应float类型的变量,也可以用等号“==”进行数值的判断。

()19.表达式:1 && 3.14 和 1 & 3 的值一样大。

()01&11=120. 为了正确计算表达式既要考虑运算符的优先级,也要考虑其结合性。

()21.任何C程序都是从main函数开始和结束;22. 在C程序中,使用分号“;”表示语句的结束。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章C++的初步知识上学期是以C为蓝本来讲解,这学期需要增加一些C++的内容,这是进入C/C++程序设计II学习的前期准备。

从C到C++C语言是结构化和模块化的语言,它是面向过程的。

能处理小规模的程序。

但当规模较大时会显示岀它的不足。

为了解决这个软件危机,提岀了面向对象的程序设计( object orie nted programming ,OOP )思想。

C++保留了C语言原有的所有优点,增加了面向对象机制。

所以C++也称为“带类的C”。

C++对C的“增强”,表现在以下两个方面:1、在原来面向过程的机制基础上,对C语言的功能作了扩充。

(本章将介绍充分部分)2、增加了面向对象的机制。

\在面向对象的程序设计中仍然要用到结构化程序设计的知识。

下面介绍C++对C的扩充,及与C的差别所在。

最简单的C++程序C++程序在结构上与C的差别如下:1、标准C++规定main函数声明为int型,即此主函数带回一个整型的函数值。

程序如果正常执行,则操作系统返回数值0,否则返回数值-1。

2、系统头文件不带后缀.h,如:#include<iostream>3、使用系统库时要使用命名空间std。

即使用using namespace std; ,这句话的意思是使用命名空间std o C++标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C++标准库,就需要用using namespace std; 来声明,表示要用命名空间std中的内容。

例最简单的只有输出的程序1.3 C1.3.1 Cn";当程序需要执行键盘输入时,可以使用抽取操作符">>",从cin输人流中抽取字符。

例如:int a;cin>>a; 。

\不管把什么基本数据类型的名字或值传给流,它都能懂。

例如,下面的程序是输岀字符串和整数:cout<<"a C++ program.";cout«e ndl;cout<<2;cout«e ndl;return 0;}从上面的程序可以看出,输出的写法可以在同一行串连也可以分在几行。

cin可以和cout 一样的方式调整行,它自动识别变量位置和类型。

例如:int afloat b;char c; ,贝U cin>>a>>b»c; ,也可以写成:cin> >a;cin> >b;cin»ccin能够知道抽取的变量的类型,它将对a,b,c分别给岀一个整型、浮点型和字符型数。

二、输入流与输出流中使用控制符(第七章中详细介绍,这里了解就可以了)流的默认格式输岀有时不能满足特殊要求,如:double average=; coutvvaveragevve ndl;希望显示的是,即保留两位小数,可是却显示了,默认显示6位有效位。

用控制符(manipulators) 可以对I/O流的格式进行控制。

控制符是在头文件中定义的对象。

可以直接将控制符插入流中。

常用控制符如下表所列。

1.3.2 用在C语言中常用命令来定义符号常量,实际上,只是进行字符置换,容易误解可以用下面的默认参数的函数来替代:void poin t(i nt=3,i nt=4);当调用“point()"时,即调用“point(3 4);”它是第3个声明的重载函数。

当调用“point(6);"时,即调用“point(6, 4);”它是第2个声明的重载函数。

当调用“point(7,8);”时,即调用第1个声明的重载函数如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起调用的二义性。

例如:void fun c(i nt); // 重载函数之一void func(int , int=4); //重载函数之二,带有默认参数void func(int=3 , int=4); //重载函数之三,带有默认参数func(7); //error:到底调用3个重载函数中的哪个?func(20,30) //error:到底调用后面2个重载函数的哪个?学生练习:将P13例不用重载,改用带有默认参数的函数。

#in clude<iostream>using n amespace std;int max(i nt a,i nt b,i nt c=0){return (a>b?a:b)>c?(a>b?a:b):c;}int mai n(){int a,b,c;cin> >a»b»c;cout<<max(a,b,c)<<" "<<max(a,b)<<e ndl;}1.3.7 变量的引用引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。

许多人使用它仅仅是想当然,在某些微妙的场合,很容易岀错,究其原由,大多因为没有搞清本源。

一、引用的概念引用是个别名,就是某一个变量或对象(目标)的别名。

从那时起,引用作为目标的别名而使用。

对引用的改动实际就是对目标的改动,对引用的操作与对变量直接操作完全一样。

引用的声明方法:类型标识符&引用名=目标变量名;女如: int a; int &ra=a; // 定义引用ra,它是变量a的引用,即别名。

说明:(1)&在此不是求地址运算,而是起标识作用。

在看到&ra形式时,当&ra前有类型符时(如int &ra),它就是对引用的声明;如果前面没有类型符(如p=&ra ),则&是取地址运算符。

(2)类型标识符是指目标变量的类型。

(3)声明引用时,必须同时对其进行初始化。

(4 )引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

ra=1; 等价于a=1;(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。

故:对引用求地址,就是对目标变量求地址。

&ra与&a相等。

(6)不能对void进行引用。

(7)不能建立数组的引用。

因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。

(8)由于指针也是变量,所以可以有指针变量的引用。

引用本身不是一种数据类型,所以没有引用的引用,也没有引用的指针。

二、引用的简单使用通过下面的例子来了解引用的简单使用。

//自编例,阅读程序#in elude <>void mai n(){ int intOne;int& rln t=i ntOne;intOn e=5;eout <<"i ntOn e:" < vintOne <<e ndl;eout <<"rl nt:" <<rl nt <<e ndl;rln t=7;eout <<"i ntOn e:" < vintOne <<e ndl;eout <<"rl nt:" <<rl nt <<e ndl;eout <<"&in tO ne:" < <&intOne <<e ndl;eout <<"&rlnt:" <<&rlnt <<endl;}运行结果为:intOn e:5rln t:5intOn e:7三、引用作为函数参数引用的一个重要作用就是作为函数的参数。

以前的C语言中函数参数传递是值传递,如果有大块数据作为参数传递的时候,采用的方案往往是指针,因为这样可以避免将整块数据全部压栈,可以提高程序的效率。

但是现在( C++中)又增加了一种同样有效率的选择(在某些特殊情况下又是必须的选择),就是引用。

例:实现两个变量值的交换传递指针给用户增加了编程和理解的负担,下面我们用引用来实现。

〃例使用引用作形参,实现两个变量的互换#in clude<>void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用{int p; p=p1; p1=p2; p2=p; 〃这里直接用p1、p2}/*为了在程序中调用该函数,则相应的主调函数的调用点处,直接以变量作为实参进行调用即可而不需要实参变量有任何的特殊要求。

如:对应上面定义的swap函数,相应的主调函数可写为:*/void mai n() {int a,b;cin>>a»b; //输入a,b两变量的值swap(a,b); //直接以变量a和b作为实参调用swap函数cout<<a<< ' ' <<b; // 输出结果}上述程序运行时,如果输入数据10 20并回车后,则输岀结果为20 10。

由上例可看岀:(1 )传递引用给函数与传递指针的效果是一样的。

这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本。

因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用“*指针变量名“的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。

而引用更容易使用,更清晰。

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。

四、返回多个值(增加内容)函数只能返回一个值。

如果程序需要从函数返回两个值怎么办?解决这一问题的办法之一是用引用给函数传递两个参数,然后由函数往目标中填入正确的值。

因为用引用传递允许函数改变原来的目标,这一方法实际上让函数返回两个信息。

引用和指针都可以用来实现这一过程。

相关文档
最新文档