文章目录

  • 1、输出输入使用“cout<<”和“cin>>”
  • 2、访问外部变量
  • 3、从指针到引用
  • 4、引用与指针的比较
  • 5、返回引用类型的函数

1、输出输入使用“cout<<”和“cin>>”

#include <iostream>
using namespace std;int main(int argc, char* argv[])
{int a;char ss[100];cout << "Input your name:\n";cin >> ss;cout << "Input your age:" << endl;  //endl就相当于换行 cin >> a;cout << "Hello, " << ss << "!Your are " << a << " old.";
}

同时,需要包含的库文件是iostream,io代表输入输出,所以iostream就是输入输出流,其中还包含一些其他很基础的输入输出函数:
cin:标准输入istream类对象,cin使我们可以从设备读如数据。
cout;标准输出(standard output)的ostream类对象,cout使我们可以向设备输出或者写数据。
cerr:标准错误(standard error)的osttream类对象,cerr是导出程序错误消息的地方,它只能允许向屏幕设备写数据。

2、访问外部变量

在C++中,即使内部变量和外部变量同名,外部变量仍然能够被访问到,只要在变量名前冠以作用域分辨符“::”:

#include <iostream>
using namespace std;int a = 111;
int main(int argc, char* argv[])
{int a = 314;cout << "Local a= " << a << endl;cout << "Global a= " << ::a << endl;
}

3、从指针到引用

在C++中,可以使用“&”运算符来声明引用另外一个变量,相当于给另个变量起了一个别名(化名)。

#include <iostream>
using namespace std;int main(int argc, char* argv[])
{double a = 1.23456;double &b = a;  //给变量a取一个化名(别名)为b,然后就可以通过修改b来修改a的值了 b = 99.9;cout << "a的值为:" << a << endl;
}


对于这样的引用,我们可以把它想象成一个形式上比较漂亮的指针,它的好处在于我们不用担心指针是否被初始化,也不用担心如何获取它的值。

4、引用与指针的比较

(1)在C++用别名(引用)

#include <iostream>
using namespace std;void change(double &a, double b)
{a= 1314;b= 520;
}
int main(int argc, char* argv[])
{double x=1.11, y=2.22;change(x, y);cout << "x的值:" << x << endl;cout << "y的值:" << y << endl;
}

(2)在C++用指针

#include <iostream>
using namespace std;void change2(double *a, double b)
{*a= 1314;  //改变指针所指向地址的数 b= 520;
}
int main(int argc, char* argv[])
{double x=1.11, y=2.22;change2(&x, y);  //指针传入值需要取址 cout << "x的值:" << x << endl;cout << "y的值:" << y << endl;
}


其结果是与使用引用一样的。

5、返回引用类型的函数

#include <iostream>
using namespace std;int &biggest(int &a, int &b)
{if(a > b) return a;  else return b;
}
int main(int argc, char* argv[])
{int k=2, m=9, res;res= biggest(k, m);cout << "The biggest is:" << res << endl;
}

在判断最大值的函数中返回的是引用类型的数据,因此需要用&来定义函数 。
若此时若返回的是一个具体的数字而不是某引用类型数据,那编译器必然就会报错 ,因为返回值和函数类型不对应。
biggest函数若用C语言格式写,则是如下:

int *biggest(int *a, int *b)
{if(*a > *b)return a;elsereturn b;
}

从C语言到C++的进阶之C++的非类新特性(篇二)相关推荐

  1. 从C语言到C++的进阶之C++的非类新特性(篇三)

    文章目录 1.从宏到内联函数 2.函数参数的缺省值 3.C++的常量与引用 4.函数重载 5.new运算和delete运算 1.从宏到内联函数 (1)写一个返回最大值的宏定义(C语言) #includ ...

  2. 从C语言到C++的进阶之C到C++的转变(篇一)

    文章目录 一.C语言到C++语言 1.C语言 2.C++语言 3.C与C++的联系 二.C到C++的明显转变 1.C++的关键字系列 2.函数必列参数 3.指针类型相同才能赋值 4.对struct等封 ...

  3. 从C语言到C++的进阶之面向对象、using与命名空间(篇四)

    文章目录 一.面向过程到面向对象 二.namespace的使用 三.using的用法 一.面向过程到面向对象 1.面向过程编程思想 C语言是典型的面向过程编程语言,面向过程是一种以过程为中心的编程思想 ...

  4. C++11新特性选讲 语言部分 侯捷

    C++11新特性选讲 语言部分 侯捷 本课程分为两个部分:语言的部分和标准库的部分.只谈新特性,并且是选讲. 本文为语言部分笔记. 语言 Variadic Templates move semanti ...

  5. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  6. vs2008中C#3.0语言的新特性

    看了YJingLee's Blog的文章,收获很大,以下文章转自http://www.cnblogs.com/lyj/archive/2008/01/08/1030525.html 总体来说,Visu ...

  7. 卷不动也得继续学!紧跟vue3的步伐,再来get一波进阶新特性!

    vue3进阶新特性 一.

  8. c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

    「今天是学习C语言第 148 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」 # 静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系.实现要点: 1.数组 ...

  9. JAVA进阶开发之(异常类)

    保姆级别的异常类教学(附代码) 目录 1.什么是异常: 2. java语言中异常以什么形式存在的呢? 3.异常对应的现实生活中是怎样的? 4.异常处理机制 5.异常处理的具体方式 6.运行时异常编写程 ...

最新文章

  1. R语言广义线性模型函数GLM、glm函数构建泊松回归模型、模型中存在过离散(Overdispersion)、则将连接函数从possion函数替换为quasipoisson函数重新构建泊松回归模型
  2. WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
  3. 树莓派4直接运行linux,树莓派4最小化安装Linux
  4. 4行代码AC——L1-038 新世界 (5分)
  5. pojBuy Tickets2828线段树或者树状数组(队列中倒序插队)
  6. stack 的优势 - 每天5分钟玩转 Docker 容器技术(113)
  7. 拆分窗口QSplitter
  8. 基于Quartz.Net的任务管理平台开发(3) —— 任务管理平台
  9. Flutter第七期 - 布局总结篇
  10. java64位安装包下载_java64位安装包
  11. 前端工作汇报PPT技巧
  12. 机器学习之聚类——模糊聚类FCM
  13. linux怎么限制文件大小,Linux文件系统文件大小限制
  14. ThinkPad T480不拆电脑后盖更换键盘
  15. 一天完成写出一篇毕业设计论文(2020年版本)
  16. 是时候放弃循环神经网络了
  17. python3多线程爬取微博配图相册,可自动获取session【简单,快速】
  18. STM8S003FP6 TIM4配置
  19. Android JetPack底部导航Navigation 组件的介绍与使用
  20. 用标号法求最短路径matlab,标号法求最短路径问题

热门文章

  1. ionic4 引入外部字体ttf
  2. 移动端点击链接元素出现蓝色边框或者出现半透明蓝色背景
  3. linux服务器和客户端配置,Linux基础教程:YUM服务端与客户端配置步骤
  4. Javascript button onclick和input type button在form中失效解决方案
  5. c语言开发移动通信,基于ARM的高效C语言编程
  6. 大屏数据可视化源码_AxureBI数据大屏可视化原型设计软件
  7. linux中用户 机器名,Python 在linux下获得当前工作目录,主机名,用户名,操作系统平台等信息...
  8. hpux11.31 环境下如何查看磁盘的WWID( scsimgr lun_map)
  9. java实验类与对象_【实验课件】上机实践2  类与对象
  10. linux下怎么创建root,Linux用root账号创建一个新的登录账号的方法