2.1 语言的翻译过程
2.1.1
解释器
BASIC就是一门解释性语言,就是解释一行执行一行,所以占用很多内存,执行速度也难以让人接受。
2.1.2
编译器 、
直接把源文件转化成汇编或者机器指令,最终的结果是一个或者多个机器代码文件。
2.1.3
编译过程
一般分为2个步骤, 第一遍建议树形结构 ,第二遍有代码生成器便利语法生成树。
连接器 ,将一组目标模块,和变量(包括外部变量)连接成可执行文件。
2.1.3.1
静态类型检查,类型检查是编译器在第一遍来完成的。
2.2
分段编译工具
2.2.1.1
声明和定义
函数的声明 int fun(int a ,int b); 返回值 函数名(参数表)
2.2.1.2一点说明 在C语言中int run() ,不是在代表无参数,是可以带任意类型参数。
2.2.1.3 int fun(int a,int b) {} 大括号就代表分号了。
2.2.1.3变量声明的语法
int a;
2.2.1.5 包含头文件
#include<iostream>
#include"iostream"
区别是 尖括号的会在首先inlude的文件夹中寻找,而引号的会首先在工程目录中寻找,如果编译器的文件就用<> 如果是用户自己创建的头文件 用引号比较好
2.2.1.6标准的C++包含头文件
#include<stdio.h> 在文件名前加个字母c
成为
#include<cstdio> 如果在同一程序中混用这两种形式会遇到问题。
2.2.2 连接
连接器把 有编译器生成的目标模块(一般是带.obj的扩展名的文件)连接成可执行文件。
2.2.3使用库文件
连接器如何查找库
如果连接器在目标模块列表中不能找到函数的定义,它将去查找库,库有多种的索引方式,库只是浏览库索引当找到定义后,就将整个目标模块而不仅仅是函数定义连接到可执行程序,而不是将整个库加载到可执行程序,那样程序将无限大。
2.2.3.2 秘密的附加模块
当创建一个C/C++可执行程序是,连接器会秘密连接某些模块,其中之一就是启动模块,它包含了对程序初始化的例程,初始化历程建立堆栈,初始化程序中某些变量。
2.3 编写第一个C++程序
2.3.1使用iostream类
cout<<"howdy!";
2.3.2 名字空间
为什么会有名字空间这个东西呢,因为程序达到一定的规模后,命名就会出现问题,感觉该用过的都用了 。所以就出现名字空间
using namespace std; 在整个文件中 都会使用std这个标准名字空间知道下一个名字空间的出现。
2.3.3
程序的基本结构
2.4
关于输入输出流
字符串的拼接
#include<iostrem>
using namespace std;
void main(void)
{
cout<<"this is too long to go there "
" I can not finish the ..."
"fdjsa;lfjdasfjl;akfjla;jflk;ajf;ladjlfk"
}
乍看上去 ,上述程序好像错了,因为每行都没有分号, C++的自由格式。每条语句可以写好几行直到分号代表语句结束。
2.5
字符串简介
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string s1,s2;
string s3 = "hello world";
string s4("I am');
s2 = "Today";
s1 = s3+" " +s4;
s1+="8";
}
s3,s4 介绍了两种不同的初始化方法.
2.6
文件的读写
必须包含fstream的头文件
ifstream 就像cin 打开文件写文件
ofstream 就像cout 打开文件读文件
getline()第一个参数是ifstrema对象 第二个是stream对象
例子
#include<fstream>
#include<iostream>
void main(viod)
{
ifstream in ("Scopy.cpp");
ofstream out(Scopy.cpp);
string s;
while(getline(in,s))
{
cout<< s<<"\n";
}
}
把整个文件拷贝到string对象中
#include<iostream>
#include<fstream>
using namespace std;
void main(void)
{
ifstram in("fillstrnig.cpp");
string s ,line;
while(getline(in,s))
line+= s+"\n";
cout << s;
}
string 具有动态性不必担心内存分配不足。好处string类中有很多针对字符串的函数 处理查找和操作方便,可以把文件当字符串来操作。
2.7
vector简介
C++标准容器 第一类容器
创建vector
vector<int> a;类似于数组,自身带有一些方法。