目录
本章内容包括:
·创建C++程序
·#include 编译指令
·main()函数--启动代码
·使用` cout` 对象进行输出
·声明和使用变量
·使用 `cin` 对象进行输入
·基本的Linux指令
一 基本的Liunx指令
1 nano
这个是用于打开文件和创建新的文件
格式:nano 文件名.cpp2 g++
这个是需要下载g++编译器才可以用的
这个是对你的cpp文件进行编译
格式:g++ 文件名.cpp3 ./a.out
这个使用来运行C++1.cpp文件
使用方法:先进行编译,之后直接输入这个指令就好4 ls
这个是查找指令,ls命令通常用于检查文件是否存在于当前目录中
使用方法:直接ls即可5 install
这个是用于安装一些东西的,这里我们只需要输入密码就可以进行安装了
sudo 是是一个用于在 Linux 系统中以超级用户(即 root 用户)权限执行命令的指令
apt 是是 Debian 及其衍生发行版(如 Ubuntu)中的包管理器,用于安装、更新、删除和管理软件包
install 是 apt 命令的一个选项,用于安装新的软件包6 快捷键的使用
crtl + o为保存 enter确认文件名 ctrl + x为退出nano编译器
二 创建一个C++程序
#include<iosteam> using namespace std; int main(){ cout<<"hello world"<<endl; return 0; }
程序调整
我们可以在`cout`这段话前面加一个`cout.put()`这个,这样我们就可以一直悬停到那个界面,直到输入任意键才可以结束程序,这个跟c语言`get()`很像C 语言输入和输出
事实 上, C++使用 `printf()` `scanf()`和其他所有标准 C 输入和输出函数,只需要包含常规 C 语言的 stdio.h 文件。 不过本书介绍的是C++,所以将使用 C++的输入工具,它们在C版本的基础上做了很多的改进,所以我们使用`cout() cin()`就好了
三 include指令与文件
C++预处理器会处理以`#`开头的预处理指令
`#`这个是用于告诉计算机这个是预处理指令
`include`使文件随源代码一并发送给编译器
< >这个里面的叫做头文件名为什么c里面的一些文件到c++里面就没有了呢?
其实他们都被重新命名了
比如c里面的`math.h`变成了`cmath`
一般改名就是去掉后面.h,然后前面加一个c
四 main( )函数
main函数是被启动代码所调用,这个启动代码是被编译器添加到程序中的,是操作系统与main函数之间的桥梁
main()函数一般都是返回0给操作系统为正常,返回非0为异常
其实非0一般都是1,所以我们main函数不要写void类型,要写int类型好一些,这样就可以判断是否为正常,通过下面的返回值,养成一个好习惯为什么一定要使用main函数?
因为这个是国际规定的,没有办法修改什么时候可以不用到main函数?
1,无操作系统:如单片机,只需要找到地址就好了
2,工具库:如动态数据库(DELL)
3,有些编程环境提供一个框架程序,该程序一般会调用一些非标准函数,如:t_main( )函数
五 `cout`
`cout<<"I love you"<<endl;`
这里的`cout`指的是`iostream`里面的一个函数,其实也是`ostream`的对象
<<这个是表示把字符串给`cout`该符号表示一个信息流动路径,`cout`其实就是一个流,把这个字符串放入到这个流里面,然后从这个流打印到电脑的终端
这个就是对于流的流动
在我们学习C语言的时候<<这个其实是位运算符,但是计算机会根据上下文来判断这个是什么符号,知识就是函数重载和运算符重载
`endl`表示一个特殊的符号,也就是换行符号,也可以用`\n`符号
其实两个都差不多,`endl`十分美观,但是又浪费代码位置,`\n`又可以减少代码位置
后面没有双引号就是变量,有双引号就是字符串使用`cout`进行拼接
cout << "Now you have " << carrots << " carrots." << endl;相比较`printf`的优点
1 智慧程度
与老式C语言的区别在于`cout `的聪明程度。在C语言中,要打印字符串 "25" 和整数25, 可以使用 C 语言的多功能输出函数`printf()`printf ("Printing a string: %s\n" , "25") ; printf ("Printing an integer: %d\n" , 25) ;
这个是需要%s和%d来解释的,这个就十分的麻烦,但是`cout`不用,它会自动识别2 安全程度
如果你尝试使用 `cout` 输出一个整数,编译器会确保你传递的确实是一个整数类型。如果类型不匹配,编译器会报错,因为 C++ 是一种静态类型语言,它在编译时进行类型检查#include <iostream> using namespace std; int main() { int value = 10; cout << value; // 正确,类型匹配 //下面这个是如果value为hello的话 //cout << "Hello"; // 错误,类型不匹配,应该使用字符串字面量 return 0; }
而 `printf` 是 C 语言中的标准库函数,用于格式化输出。它不是类型安全的,因为它使用格式说明符来指定将要输出的数据类型。这意味着 `printf` 不会在编译时检查类型,而是在运行时进行转换,这可能导致类型不匹配的问题,如果使用不当,可能会引起安全问题,如缓冲区溢出
#include <stdio.h> int main() { int value = 10; printf("%d\n", value); // 正确,使用格式说明符 %d 指定整数类型 printf("%s\n", value); // 错误,但不会在编译时报错,可能会导致未定义行为 return 0; }
综上所述:`cout`相比较`prnitf`更加智慧且安全性高
3可扩展性和灵活性
cout:`cout`是基于流(stream)的输出方式,可以通过重载`<<`运算符轻松扩展,支持用户自定义类型的输出。例如,可以为自定义类重载`<<`运算符,使其可以直接通过`cout`输出
六 C++代码风格
C++源代码风格 虽然C++在格式方面赋予了您很大的自由,但如果遵循合理的风格,程序将更便于阅读。 有效但难看的代码不会令人意,它遵循了下述规则。
• 每条语句占一行
• 每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行。
• 函数中的语句都相对于花括号进行缩进
• 与函数名称相关的圆括号周围没有空白
七 声明语句和变量
为什么会有声明变量和语句
有些语言(最典型的是BASIC) 在使用新名称时创建新的变量,而不用显式地进行声明。 这看上去对 用户比较友好,事实上从短期上说确实如此。 问题是, 如采错误地拼写了变量名,将在不知情的情况下创 建一个新的变量。
在BASIC 中,一些程序员可能编写如下语句:CastleDark = 34; ... CastleDank = CastleDark + MoreGhosts; ... PRINT CastleDark
由于`CastleDark` 是拼写错误 (将 r拼成了 n),因此所作的修改实际上并没有修改`CastleDark`。 这种错 误很难发现,因为它没有违反BASIC 中的任何规则。 然而,在C++中,将声明 `CastleDark`,但不会声明被 错误拼写的 `CastleDark`,因此对应的 C++代码将违反 "使用变量前必须声明它" 的规则,因此编译器将捕 获这种错误,发现,潜在的问题
综上所述:如果没有声明的变量或者语句的话,如果后面这个变量名字拼错,这个程序也会没有任何反应,这样的问题会很让人察觉,就一个字母拼错
声明
C++声明风格:C++通常的做法是,在首次使用变量前声明它。这样,就不必在程序 中到处查找,以了解变量的类型
C声明风格:所有的变量声明通常都位于函数或过程的开始位置
C++风格缺点:无法把所有的变量放到一起,就无法对那些变量声明了一目了然扩展:其实你声明了之后,这个是可以利于内存管理器去工作,内存管理器会根据你的声明来进行内存的分配,内存是一个很珍贵的资源
八 `cin`
信息从`cin`流向对应的变量名. 显然,对这一过程有更为正式的描述
`cin >> a`
这个代码就是把键盘输入的东西放入到输入流里面,然后随着这个流进入到a变量
这个智能程度和安全程度和上述的`cout`是一样的
九 总结
此片文章是基于hello world来编写的一个C++的学习,可以牢记hello world每一处来记忆这里面的知识点
十 思维导图
![]()
![]()