C++ Study Note

一、编程语言的发展史

1、机器语言:二进制指令

2、汇编语言:操作系统底层驱动会用到

3、C

4、C++:在C上增加了类。标准有C++98、C++11等

5、java:C++子集

6、python:脚本语言

7、scratch:可视化编程语言,定义许多模块,直接拖动使用

二、直接编译

g++ hello.cpp

        初始化标准是c++11,g++默认标准比c++11低,会编译出错

g++ hello.cpp --std=c++11

./a.out

        使用--std告诉编译器采用c++11标准。执行成功后会生成一个可执行文件a.out

        ./a.out执行可执行文件,即可输出结果

g++ hello.cpp --std=c++11 -o hello

./hello

        使用-o 可以改变生成的可执行文件名

        ./hello执行命令,输出结果

注:我在实际操作时,使用g++ hello.cpp并没有报错,所以没有特意指定编译器按c++11标准去执行

三、编译和链接(complie and link)

遇到规模较大的程序时,需要将程序分别放在不同的文件里。

函数的声明:.h 或.hpp

函数的实现:.cpp

main函数:.cpp

linux系统中使用的编译器是g++

程序的编译和链接:源代码——>object文件——>可执行程序

g++ -c main.cpp && g++ -c mul.cpp

        -c即编译,分别将两个.cpp源文件编译成两个.o文件

g++ main.o mul.o -o mul

       -o即链接,将两个.o文件链接,生成可执行文件mul

./mul

        执行命令 


也可以直接编译生成可执行文件:

g++ main.cpp mul.cpp -o mul

直接编译:遇到多个.cpp文件时,一个个输入很麻烦

分开编译:使用Makefile会方便许多

四、调试程序(debug)

  • 错误类型:编译错误、链接错误、运行错误
  • 编译错误:一般由语法错误造成,依照错误提示去指定位置查
  • 链接错误:多个程序文件均无语法错误,可生成.o文件,但在链接时报错

                        依照报错查看哪个文件未链接上,去此文件中修改错误

                        如下图,把mul.cpp中函数名从mul修改为Mul,文件在编译时无语法错误,但链接                          时报错:找不到mul函数。

  •  运行错误:生成可执行文件成功,在运行可执行文件时出错

                        写程序时必须要考虑多种情况,否则程序可能抛出异常

                         如下图,在mul.cpp的mul函数中添加一行代码:int c = a / b,运行时输入参数2和

                        0,报错:程序直接被杀死。  

                        

五、基础语法

预处理和宏
  • 预处理:在正式编译前的步骤,使用预处理器去处理预处理指令,如#include #define #ifdef                #endif等
  • 宏:由#define指令定义,类似于全文替换(#define PI 3.14)
函数结构——基本名词
  • 函数返回类型:return 后接的返回值类型
  • 函数名:
  • 形参:函数头()中的内容,表示函数输入的参数,没有入参可以直接用(),或者(void)
  • 函数体:{}里的内容统称函数体
  • 返回语句:eg:return 0; 有的函数可以没有返回值,函数返回类型会用void
  • 返回值:给调用函数返回的值,return后接的值即为返回值,一般在调用函数中定义一个变量来接收这个返回值

main函数的返回值不返回给其他程序,而是返回给操作系统 

注释
  1. 单行注释://
  2. 多行注释:/**/
头文件

头文件用#include<>包含,C++中由很多自带的头文件库,其中iostream就是包含输入输出的头文件

命名空间

许多类、函数、变量都在命名空间中,如cout、cin、endl等都在命名空间std中。

程序访问命名空间std的方法:

  1. 把using namespace std;放在函数定义之前,让所有函数都能使用std中的所有元素
  2. 把using namespace std;放在特定的函数定义中,让该函数能访问
  3. 在特定的函数中使用using std::cout等,让该函数中能使用指定的元素
  4. 不适用using,在使用时在元素前加std::,如std::cout
输入输出
  • 输入:cin >> "" >> endl;
  • 输出:cout << "" << "" << endl;

cout是ostream类的对象,cin是istream类的对象

ostream类和istream类被定义在iostream文件中


两种换行符(当前指令结束后换到下一行):endl 、 \n(沿用C的语法)

变量

要将信息存储在计算机中,必须指明存储的地址和会占用的内存空间大小

  1. 定义(声明):int a;指出了存储类型、会占用的内存空间和该内存单元的名称
  2. 初始化(赋值):a = 10;给这块内存空间存入数据

使用变量前必须先声明并初始化它

变量名的命名规则:

  1.  只能使用数字、字母和下划线_,数字不能在开头
  2. 区分大小写
  3. 不能使用C++关键字命名
  4. 两个下划线_和大写字母开头的将保留给实现使用
  5. 一个下划线开头的将用作全局标识符
  6. 有些平台会有长度限制
 数据类型

六、

七、

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值