简介
- 1. 概况
- 2. 开发工具
- 3. mac 写hello word
- 4. c++ 基本概念
- 5.两个数相加代码分解
- 5.1编译预处理命令# include
- 5.2输入输出库iostream
- 6.注释
- 7.编码规范
《老九学堂C++课程》《C++ primer》学习笔记。《老九学堂C++课程》详情请到B站搜索《老九零基础学编程C++入门》
1. 概况
20世纪70年代,贝尔实验室的Thompson和Ritchie在想玩游戏的过程中,开发了C语言用于重写unix系统。
20世纪80年代贝尔实验室Bjarne Stroustrup在C语言的基础上开发了C++ ,主要是为了解决软件设计危机。C++应用范围:Office工具,编译器,操作系统,大型游戏。
一开始C++叫带类的C,可想而知其和C语言的关系。
C++衍生出了Java(语法比较简单),Java和C# 是兄弟。
2. 开发工具
1.记事本+命令行–专业大牛身份标识别,上手慢;
2.Visual c++ – 经典开发工具,与流行的操作系统有冲突;
3.VS --功能强大,体积同样强大;(3-5G)只支持微软版本的C,但是课程推荐标准C。
4.Code::blocks–开源免费C++开发工具,专业开发人员推荐
5.DEV C++, Xcode, Clion(收费), C-free(国产), Xcode(苹果公司的开发工具mac),C4droid(手机端运行)
6.eclipse c++ 开发
3. mac 写hello word
1.Mac OS中使用VScode配置C++语言开发环境
一键运行,不用配置编译,运行,调试:
2.在mac上使用vscode创建第一个C++项目
(不会配置,回头再说)
#include <iostream>
int main()
{ std::cout<<"hello world 2" << std::endl;return 0;
}
4. c++ 基本概念
1.每个C++程序都包含至少一个函数,至少一个函数为main函数。操作系统通过调用main函数来执行程序(唯一被操作系统显示调用的函数)。
2.函数定义4要素:
–>返回类型–main 函数的返回类型一定要是int,return语句所返回值的类型必须和函数返回类型一致。main返回0表示其成功执行,其他非零的值都有操作系统定义的含义,-1表示程序运行失败。
–>函数名–函数名的命名规范
–>圆括号–(参数列表)
–>函数体–以花括号包围的语句块
3.c++中的语句大多数都是以分号结尾。(不用分号:块语句,大括号括起来的)
4.源文件–保存待编译程序的文件,源文件的后缀与具体编译器有关。有.cpp .cp .c等等,C++ primer 一书中的源文件以.cc结尾。
5.常用编译器
gnu-默认命令为g++ prog1.cc -o prog1
微软visual studio: cl -GX prog1.cpp
6.表达式:C++中表达式有一个/几个操作数+操作符组成;每个表达式都会产生一个结果,通常是将操作符作用到操作数所产生的值。
7.定义一个变量,最好记得赋初值(变量的初始化)。
5.两个数相加代码分解
#include <iostream>
int main(){std::cout<<"Enter two numbers:"<<std::endl;int v1,v2;std::cin>>v1>>v2;std::cout<<"The sum of "<<v1<<" and "<< v2<< " is "<< v1+v2 << std::endl;return 0;
}
5.1编译预处理命令# include
编译预处理命令,尖括号中是一个头文件的名字,程序使用库文件必须包含相关的头文件。编译预处理命令应该写在文件的最开始部分。
C 头文件一般是.h结尾,C++采用C前缀兼容C头文件,其底层实际还是导入了.h文件。也可以在C++中采用.h的头文件。
5.2输入输出库iostream
iostream 格式化处理输入输出数据的标准库,iostream 的基础:istream,ostream。
秉持C++一切皆对象原则,iostream 库包含4个标准输入输出对象
iostream 库4个标准输入输出对象 | |
---|---|
cin | 标准输入 |
cout | 标准输出 |
err | 标准错误,用于输出警告和错误给程序使用者,try -expect? |
clog | 产生程序执行的一般信息?这些信息是什呢? |
<< | 输出操作符;两个操作数:左操作数–ostream对象,右操作数–输出内容;返回左操作数,所以可以连接输请求 |
>> | 输入操作符;两个操作数:左操作数–ostream对象,右操作数–变量;返回左操作数,所以可以连接输请求 |
endl | 操纵符;输出换行符并清空缓存区,通过刷新缓冲区,使得用户立即可以看到写入到流中的内容[\n+fflush(stdin)] |
std:: | 前缀 ,其表明 cout,cin 和 endl 是定义在命名空间 std 中的,可以避免与库中定义的名字相同而引起无意冲突 |
不用endl也是能看到,就是没有换行而已
忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致程序错误推断崩溃位置。
命名空间是C++的一大特性,用来在编写大型程序时组织源代码。
6.注释
注释用于概括算法、确认变量的用途或者阐明难以理解的代码段。
注释并不会增加可执行程序的大小,编译器会忽略所有注释。
错误的注释比没有注释更可怕
//–单行注释
/**/–定界符号,用于段落注释。多行注释时,注释内容的每一行都用* 开始,表明这一行是注释块的一个 部分。一般将注释块放在要解释的代码上方。
临时注释,建议用单行注释符。
7.编码规范
1.每条语句占一行
2.函数体花括号独占一行
3.函数中的语句相对于花括号进行缩紧
4.函数名后紧跟小括号,没有空格
注释的模版
/***************************************** 文件名:xxx* 创建人:xxx* 日 期:xxx* 修改人:xxx* 日 期:xxx* 版 本:1.0.0****************************************/
//****************************************
// Method:
// Fullname:
// Access: public
// Return: viod
// Parameter: int fontsize
//****************************************