C++程序设计:谭浩强教程中的引用与赋值
需积分: 42 76 浏览量
更新于2024-08-24
收藏 8.81MB PPT 举报
"先调用再赋值-清华大学谭浩强C++教程"
在这个教程中,讲解的是关于C++中函数返回引用以及先调用再赋值的概念。首先,我们来看一下例子中的代码:
```cpp
int a=4;
int &f(int x)
{ a=a+x;
return a;
}
void main(void)
{ int t=5;
cout<<f(t)<<endl;
f(t)=20;
cout<<f(t)<<endl;
t=f(t);
cout<<f(t)<<endl; }
```
这段代码中,`f` 函数返回了一个整型引用,这个引用是变量 `a` 的别名。这意味着当 `f(t)` 被调用时,实际上是操作 `a` 的值。
1. 首次调用 `f(t)`,将 `t`(初始值为5)与 `a`(初始值为4)相加,结果9被输出。此时,`a` 的值变为9。
2. 接下来的 `f(t)=20` 实际上是将20赋值给 `a`,因此 `a` 变为20,再次输出 `f(t)` 结果为25。
3. 然后 `t=f(t)` 将 `t` 的值设置为 `a` 的当前值,即20,所以 `t` 变为20,再次输出 `f(t)`(此时 `a` 未改变,仍为20),结果仍然是25。
4. 最后,再次调用 `f(t)`(此时 `t`=20),将 `t` 与 `a` 相加,`a` 变为40(因为 `a=a+t`),然后把结果赋值给 `t`,所以 `t` 变为40,输出 `f(t)` 为40。
这个例子展示了C++中引用的力量,它可以让我们直接操作变量的原始存储位置,而不是复制一个副本。这在处理大对象或者需要高效操作时非常有用。
C++是由C语言发展而来,它在C的基础上增加了面向对象的特性,比如类、继承、多态等。C++语言的特点包括:
- **结构化**:C++是一种结构化编程语言,它强调程序的组织结构,使得代码更易于理解和维护。
- **灵活性**:C++支持过程式编程和面向对象编程,提供了丰富的数据类型和运算符,使得程序员可以灵活地设计程序。
- **高效性**:由于C++的底层特性,编译后的程序执行效率高,接近汇编语言。
- **可移植性**:C++程序在不同平台间的移植性很好,编写一次,几乎可以在任何支持C++的系统上运行。
- **不严格的语法**:虽然这使得C++具有较大的灵活性,但也可能对初学者造成困扰,因为语法错误可能在运行时才暴露出来,调试难度相对较高。
学习C++时,理解这些特性是非常重要的。谭浩强的C++教程,作为清华大学出版社的教材,通常会系统地介绍这些概念,帮助读者掌握C++的基本语法和编程技巧。同时,书中可能会通过丰富的例子和练习,让学习者更好地理解和应用这些知识。
2012-09-19 上传
2009-06-09 上传
2014-12-21 上传
2023-07-28 上传
2024-11-02 上传
2023-07-01 上传
2023-12-12 上传
2023-07-28 上传
2024-06-20 上传
Pa1nk1LLeR
- 粉丝: 66
- 资源: 2万+
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析