C++学习 <day1-C++介绍&基础>

一、什么是C++

1. C++介绍

  • C++由程序员控制生命周期(性能提升);
  • C++数据存储等方式由硬件决定(性能提升);

C++11 引入了 type_traits/range;

C++17 删除了 auto_ptr;

二、C++开发环境&相关工具

学习视频(英文会议):

三、C++的编译/链接模型

预处理→编译→汇编→链接

注:  .o文件 即 目标文件

1. 预处理:防止头文件被循环展开 (推荐用法)

即,此头文件只展开一次 once

2. 编译:

编译优化的优点:速度较快

编译优化的缺点:不利于调试

推荐用法:

  • 开发:debug
  • 编译:release

增量编译(build):目标文件比源文件更新则进行编译(若仅修改头文件,推荐使用全部编译(rebuild))

四、C++基础

 1. iostream说明

cerr:通常为错误信息,立即刷新到缓冲区

clog::通常为日志,不需要立即刷新到缓冲区

  • std::flush :执行到此行语句,显式的刷新出来
  • std::endl :刷新且换行

2. 命名空间

namespace NAME
{
    void fun()
    {
        //...
    }
}
void fun()
{
    //全局
}
int mian()
{
    using namespace NAME; //可写在mian外部,但不推荐,易产生冲突
    func();  
    //表示既可以访问全局空间里的内容,也可以访问命名空间NAME里面的内容
}

 3. 结构体

struct Point
{
    int x;
    int y;
    void IncX()
    {
        x = x + 1;    
    } //加入函数,更倾向于类
};
int main()
{
    Point p ;
    p.x;
    p.y;  //访问
    p.IncX();
}

五、对象与基本类型

//<other.cpp>

int g_x;

//<main.cpp>

int g_x;   // 编译出错,提示重复定义
extern int g_x;  //使用extern关键字,可以访问上述文件中的变量,对g_x的声明

 六、数组、vector与字符串

 

 1. 指针初始化

int (*a)[3] = {&x1,&x2,&x3}; //不可以这样进行初始化

int b[3];
int (*a)[3] = &b;  //可以这样进行初始化

2. 声明数组引用

int (&a)[3];//引用

int b[3];
int [&a] = b;//此时a就是数组b的别名

//只能定义数组的引用,不能定义引用数组
int x1;
int x2;
int x3;
int &[3] = {x1,x2,x3}; //这种写法错误

3. 数组的引用

int a[3] = {1,2,3};

auto b = a;

std::cout << std::is_name_v<decltype(b),int*> << std::endl;
std::cout << *b <<std::endl; //b的地址
std::cout << b <<std::endl;  //b的内容
std::cout << &(a[0]) <<std::endl; // a[0]的地址

//由此可见,b指向a中的第一个元素

4. 数组其他操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值