2021-01-29

#include
头文件 io流(输入输出,文件读写)
c 到 c++升级1:

命名空间:
作用:防止命名冲突(多人协同开发出现命名冲突:全局变量,函数命名冲突)
using namespace std;
命名空间定义:namespace 名字{}
(在主函数之前)
命名空间可以嵌套定义
A::B::C
namespace A
{
int count = 5;
}
namespace B
{
int count = 6;
}
int main{
return 0;
}
命名空间的使用:
方式一:名字::(作用域限定符)
cout << "count = " << A::count << endl;

方式二:using 关键字
using namespace 名字 或 using 名字::成员
using namespace A;
using A::count;

#include
using namespace std;
namespace A {
int a = 100;
void show1(){
cout << "111 = " << a << endl;
}
}
namespace B {
int a = 999;
void show1(){
cout << "222 = " << a << endl;
}
namespace C{
using A::a;
void show1(){
cout << "333 = " << a << endl;
}
}
}
using B::a;
using B::C::show1;

int main()
{
cout << "a = " << a << endl;
show1();
return 0;
}
输出结果:
a = 999
333 = 100

#pragma once
头文件访问一次
源文件不能访问其它源文件的命名空间(命名空间中存在定义)

using namespace std;(存在使用风险,容易与系统命名空间std里的变量冲突)
总结:防止自己编译的全局变量和函数与其它文件冲突,那么你应该将这些全局变量和文件放在自己定义的命名空间中。

C语言如何解决命名冲突的问题的?
static(将函数或变量锁定在本文件中使用)

工程应用的作用:限定作用域防止命名冲突
修饰一个局部变量,延长它的生命周期,全局变量是危险的(多线程多通道会用共享问题),应尽量减少使用,尽量使用静态局部变量。

输入与输出
(包含头文件)
标准输出流cout
行缓冲(满一行输出,刷新缓冲区)
cout << “hello world” << endl;
endl (不是换行’\n’,实际执行刷新缓冲区)
刷新缓冲区fflush
cout << “hello world”;
fflush(stdout);仍可输出
设置缓冲区setbuf(行缓冲,无缓冲,全缓冲(大小))

标准输入流cin
#include
using namespace std;

int main()
{
int a;
int b;
cout << “please input number for a:”;
cin >> a;
cout << “please input number for b:”;
cin >> b;
cout << a << " " << b << endl;
return 0;
}
输出结果:
111 222

cin无scanf的垃圾存在问题
连续输入 cin >> a >> b >> c;

int buf[1024];
输入hello world
cin.getline(buf, 1024 - 1, ‘w’);
cout << buf << endl;
输出hello(停止到w前)

cerr/clog(错误/日志输出,无缓冲区)

for的升级
foreach(只适用遍历)
char buf[15] = “hello world”;
for(char ch : buf)
{
cout << ch << endl;
}

关键字的升级
register
C:将变量尽可能存储在cpu的内部寄存器中,从而省去了从内存抓取数据的时间,提高了程序的运行效率。
使用场景:优化程序(当某个变量需要频繁访问)
注意事项:1.只能修饰局部变量,不能修饰全局变量和函数。
2.register修饰的变量不能使用取地址获取该变量的地址。
3.register修饰的变量一定是cpu所能接受的数据类型。(有些cpu不支持浮点型)

C++升级:当对register修饰的变量取地址操作时,c++编译器会将该变量保存 到内存中。

typedef
C:给变量重命名,提高程序的可读性和移植性。
typedef重命名函数指针
typedef int (* P_FUNC)(int,int);
P_FUNC p_func = add;

c ----- c++:using 重命名数据类型

using Int = int;
Int a;

using P_FUNC = int (*)(int,int);

auto
C:自动变量,离开作用域释放。
c----c++:类型推导(注意:存在推导规则)高效运算
auto a = 5;//自动推导为整型
auto b = add;自动推导为函数指针

bool布尔类型(true与false)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

洋芋辰丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值