目录
什么是C++?
为什么要学C++?
C++的编译器
基础框架:
头文件
using namespace
main函数
基础语法:
注释
标识符
数据类型
变量声明和定义
数组的声明、定义和遍历
输入以及输出流
未完待续……
C++是一种通用的、静态类型的编程语言,它是C语言的扩展。C++由Bjarne Stroustrup于1980年代初开发,并在1983年首次发布。C++具有高级的编程功能,同时保留了C语言的低级编程能力。
既然C++都这么难了,为什么要学它?C++的逻辑运算能力远超过其它语言,因此它在数学运算以及遍历等方面具有很大的优势。
C++可以用很多编译器来编译,例如Codeblocks,Visual Studio Code等。在本系列不做任何强求去特定下载某编译器。C++目前已经更新到C++23(建议使用14及以上)。
头文件就是类似python那样的库,每个头文件都是拥有不同的功能,大多数代码
需要头文件。iostream是最基础的头文件。往后还会学习到更多的头文件。
"using namespace"是C++中的一个指令,用于简化命名空间的使用。命名空间是 C++中用于组织和管理标识符(变量、函数、类等)的一种机制,可以避免命名冲突和提 供代码的可读性。它的功能是隐藏代码前面的std::。
main函数是整个代码的核心,所有的交互指令都是在这里运行,例如输入、输出、 运行各部分函数等等。想要结束全部代码,就在main函数底下添加return 0。
拥有了这些部分以后,就组成了所有C++程序的基础框架。
#include //这个就是头文件
using namespace std; //这个是命名空间
int main() //这个是main函数
{
cout << "清淡的柏树" << endl; //这个是需要运行的代码
return 0;
}
单行注释用双斜线(//),注释内容直到行末为止
//这里注释了一段内容
多行注释用斜线加星号来注释(/* */),中间内容被注释
/*第一行
第二行
第三行
第四行
第五行
……
第n行*/
标识符是用来命名变量、函数、类、对象(这些会在后面讲)等命名的符号。其中有 五条重要的标识符规则。
1.标识符是由大小写字母、数字和下划线构成的(例如Qidanbai1234_ qidanbai Qidanbai)
2.数字不能作为标识符的开头(1Qidanbai是错误的)
3.标识符对大小写很敏感(Qidanbai和qidanbai是两个不同的标识符)
4.标识符的限定长度是255个字符(这条规则可以忽略不记,因为太长了)
5.标识符中不能含有C++中的关键字(例如if、int等)
下面是C++中大多数的关键字
#include、alignas、alignof、and、and_eq、asm、auto、bitand、bitor、bool、break、
case、catch、char、char16_t、char32_t、class、compl、const、constexpr、const_cast、
continue、decltype、default、delete、do、double、dynamic_cast、else、enum、explicit、
export、extern、false、float、for、friend、goto、if、inline、int、long、mutable、
namespace、new、noexcept、not、not_eq、nullptr、operator、or、or_eq、private、
protected、public、register、reinterpret_cast、return、short、signed、sizeof、
static、static_assert、static_cast、struct、switch、template、this、thread_local、
throw、true、try、typedef、typeid、typename、union、unsigned、using、virtual、void、
volatile、wchar_t、while、xor、xor_eq
良好的标识符命名可以提高代码的可读性和可维护性,因此在编写代码时应该选择 恰当的标识符命名。
数据类型分成基本数据类型和派生数据类型。
基本数据类型是用来表示程序中的基本数据的类型。它们用于存储和操作不同种类的 数据,如整数、浮点数、字符等。
使用基本数据类型可以在程序中声明变量,为变量分配内存空间,并对其进行操作和 计算。不同的基本数据类型具有不同的范围和精度,适用于不同的数据需求和计算要求。
这些都是基本数据类型:
//整数类型:
bool:用于表示布尔值,只能为true或false(1和0也行)。
char:用于表示字符,占用一个字节的内存空间。
unsigned char:用于表示无符号字符,取值范围是0到255。
short:用于表示短整数,占用两个字节的内存空间。
unsigned short:用于表示无符号短整数,取值范围是0到65535。
int:用于表示整数,占用四个字节的内存空间。
unsigned int:用于表示无符号整数,取值范围是0到4294967295。
long:用于表示长整数,占用四个字节的内存空间。
unsigned long:用于表示无符号长整数,取值范围是0到4294967295。
long long:用于表示长长整数,占用八个字节的内存空间。
unsigned long long:用于表示无符号长长整数,取值范围是0到18446744073709551615。
//浮点类型:
float:用于表示单精度浮点数,占用四个字节的内存空间。
double:用于表示双精度浮点数,占用八个字节的内存空间。
//宽字符类型:
wchar_t:用于表示宽字符,用于处理多语言字符集,占用两个或四个字节的内存空间,取决于编译器和平台。
//空类型:
void:用于表示空类型,不具有任何值,通常用于函数返回类型、指针类型或函数参数类型的占位符。不能声明void类型的变量。
派生数据类型是通过对基本数据类型进行组合或者加工而得到的新类型,它们是基于 基本数据类型创建的。派生数据类型包括指针类型、数组类型、结构体类型和联合体类 型。
//所有的派生类型
指针类型:指针类型是一种特殊的数据类型,用于存储变量的内存地址。通过指针,可以直接访问和修改对应内存地址上的数据。
数组类型:数组类型是一种由相同类型的元素组成的集合。通过索引,可以访问数组中的特定元素。数组在内存中是连续存储的。
结构体类型:结构体类型是一种用户自定义的数据类型,用于组合多个不同类型的变量。结构体可以包含不同类型的成员变量,通过成员运算符访问各个成员。
联合体类型:联合体类型是一种特殊的数据类型,允许在同一内存位置存储不同类型的数据。联合体的大小由最大的成员决定,只能同时存储其中的一个成员。
枚举类型:枚举类型用于定义一组具名的常量。枚举类型的每个常量都有一个对应的整数值,可以用于表示某种状态或选项。
函数类型:函数类型表示一个函数的数据类型,定义了函数的返回值类型和参数列表。函数类型可以用来声明函数指针变量,以便于对函数进行间接调用。
指向函数的指针类型:指向函数的指针类型是指针类型的一种特殊形式,可以存储函数的内存地址,并通过该指针调用相应的函数。
引用类型:引用类型是一种特殊的派生数据类型,允许一个变量引用另一个变量的内存地址,从而直接访问该变量。引用类型主要用于C++中。
变量声明是用来告诉编译器变量的名称和类型,不会分配内存。
//例如
int num; //int是定义时的数据类型 num是变量名称 在没有定义的情况下这个变量是一个随机数
变量定义是在声明的基础上给变量分配内存空间,并可以进行初始化。
//例如
int num = 114514; /*int是这个变量的数据类型 num是这个变量的名称 =是赋值运算符(后面讲运算符的时候会用) 114514是赋值的内容*/
//或者
int num;
num = 114514; //这里是额外赋值
数组的声明和申请是和变量一样的,只不过方式不同而已。
//第一种
int num[5]={}; //定义一个长度为5且是空的数组
//第二种
int num[5]={0}; //定义一个长度为5且全是0的数组
//第三种
int num[5]; //定义一个长度为5且所有元素都是随机数的数组
数组的定义也是和变量一样的。
//第一种
int num[5]={1,2,3,4,5}; //定义了一个长度为5,内容是1,2,3,4,5且名称是num的整数类型数组
//第二种
int num[]={1,2,3,4,5}; //定义了一个自动识别长度,内容是1,2,3,4,5且名称是num的整数类型数组
//第三种
int num[5]; //定义了一个长度为5的数组
for(int i=0; i<5; i++) //这是循环,后面在遍历的文章中会讲到
{
num[i]=i+1; //i是下标,会随着下标的文章中一起讲
}
//第四种 为单独一个元素定义
int num[5]; //定义了一个长度为5的数组
num[1]=2; //为第二个元素定义为2
//错误示范!!!
int num[];
num[0]=1;
//这样会报错,因为这样没法为这个数组分配内存
头文件需要:iostream
输入流是cin
输出流是cout
#include
using namespace std;
int main(){
int n;
cin>>n; //将输入的数据替换掉变量n的原数据
int a,b; //同时申请a和b的变量
cin>>a>>b; //输入a和b的数据,用tab, 空格, 或enter区分开
int a[5];
cin>>a[1]; //对数组a的指定元素输入数据
}
#include
using namespace std;
int main(){
int n;
cout<2; //输出布尔值
}
就这样基础语法就讲好了,后续会出遍历、函数、类等更深层的C++。