C++入门基础知识笔记整理(三)

六、C++入门基础知识的输入和输出

在C语言中有标准输入输出函数scanf和printf,而在C++中有cin标准输入和cout标准输出。在C语言中使用scanf和printf函数,需要包含头文件stdio.h。在C++中使用cin和cout,需要包含头文件iostream以及std标准命名空间。

C++的输入输出方式与C语言更加方便,因为C++的输入输出不需要控制格式,例如:整型为%d,字符型为%c。

注意:endl,这其中的l不是阿拉伯数字1,而是26个英文字母的l,它的作用相当于换行。

这里我们还要注意下cin的特点,他和C语言中的gets有些像,gets是遇到换行符停止,而cin是以遇到空格,tab或者换行符作为分隔符的,因此这儿输入hello world会被空格符分隔开来。

这儿我输入的是hello world,但因为输入时出现了空格,所以之后的内容并不会读入,因此arr中存的就是hello。

七、C++入门基础知识-缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该
默认值,否则使用指定的实参。

 

1、全缺省

全缺省参数,即函数的全部形参都设置为缺省参数。

 

2、半缺省参数

注意: 

  • 半缺省参数必须从右往左依次给出,不能间隔着给。

  • 缺省参数不能在函数声明和定义中同时出现

  • 因为:如果声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省值。

  • 缺省值必须是常量或者全局变量。

八、C++入门基础-C++函数重载

1、函数重载

函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题

注意:若仅仅只有返回值不同,其他都相同,则不构成函数重载。

2、C++函数重载的原理

为什么C++支援函数重载,而C语言不可以了?

这里我们就要回顾一下以前的知识了,在运行到执行文件前,要经过:预编译,编译,汇编,链接这些阶段

其实问题就出在编译完之后的汇编阶段,因为在这里C++和C语言有着些许的不同,下面我们来看看:

采用C语言编译器编译之后

 采用C++编译器编译之后

总结:

        其实归根到底,还是因为C编译器和C++编译器对函数名的修饰不同。在gcc下的修饰规则是:【_Z+函数长度+函数名+类
型首字母】。

        这其实也告诉我们为什么函数的返回类型不同,不会构成函数重载,因为修饰规则并不会受返回值的影响。

3、extern “C”

有时候在C++工程中可能需要将某些函数按照C的风格来编译,在函数前加extern “C”,意思是告诉编译器,

将该函数按照C语言规则来编译。比如:tcmalloc是google用C++实现的一个项目,他提供tcmallc()和tcfree

两个接口来使用,但如果是C项目就没办法使用,那么他就使用extern “C”来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静香是个程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值