C++学习

目录

C++程序结构

头文件

注释

基本的类型

typedef 声明

枚举类型

         常量

整数常量

 浮点常量

布尔常量

字符常量

字符串常量

定义常量

 杂项运算符

         常用库函数

1、max函数|C++返回最大值

2、min函数|C++返回最小值

3、cin.getline()、getline()、gets()、cin.get(),getchar()

4、栈

5、队列

6、双端队列


C++程序结构

#include <iostream>

using namespace std;

// main() 是程序开始执行的地方

int main()

{

        cout << "Hello World"; // 输出 Hello World

        return 0;

}

头文件

相当于C语言中的#include<stdio.h>

#include <iostream>

using namespace std;

万能头文件,包含很多函数可以直接用

#include<bits/stdc++.h>
using namespace std;

注释

C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。

C++ 注释一般有两种:

  • // - 一般用于单行注释。

  • /* ... */ - 一般用于多行注释。

基本的类型

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型

wchar_t

一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed
  • unsigned
  • short
  • long

类型

范围
char1 个字节-128 到 127 或者 0 到 255
unsigned char1 个字节0 到 255
signed char1 个字节-128 到 127
int4 个字节-2147483648 到 2147483647
unsigned int4 个字节0 到 4294967295
signed int4 个字节-2147483648 到 2147483647
short int2 个字节-32768 到 32767
unsigned short int2 个字节0 到 65,535
signed short int2 个字节-32768 到 32767
long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int8 个字节0 到 18,446,744,073,709,551,615
float4 个字节精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double8 个字节双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long double16 个字节长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t2 或 4 个字节1 个宽字符

注意:

1、bool类型:存储值 true 或 false。

2、 用 extern 声明外部变量是不能进行初始化:

为什么会这样呢?因为 extern int a; 只是声明而不是定义,声明是不会为变量开辟内存空间的,自然无法对其进行初始化的操作。

typedef 声明

可以使用 typedef 为一个已有的类型取一个新的名字

例如,下面的语句会告诉编译器,feet 是 int 的另一个名称:

typedef int feet;

现在,下面的声明是完全合法的,它创建了一个整型变量 distance:

feet distance;

注意:

#define 没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。

而 typedef 有自己的作用域。

枚举类型

创建枚举,需要使用关键字 enum。枚举类型的一般形式为:

enum 枚举名{ 
     标识符[=整型常数], 
     标识符[=整型常数], 
... 
    标识符[=整型常数]
} 枚举变量;

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。

例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。

enum color { red, green, blue } c;
c = blue;

默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。

enum color { red, green=5, blue };

在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。

常量

整数常量

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。

整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写。

eg:

212 // 合法的

215u // 合法的

0xFeeL // 合法的

078 // 非法的:8 不是八进制的数字

032UU // 非法的:不能重复后缀

 85 // 十进制

 0213 // 八进制

 0x4b // 十六进制

 30 // 整数

 30u // 无符号整数

 30l // 长整数

 30ul // 无符号长整数

 浮点常量

当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。

布尔常量

布尔常量共有两个,它们都是标准的 C++ 关键字:

  • true 值代表真。
  • false 值代表假。

注意:我们不应把 true 的值看成 1,把 false 的值看成 0。

字符常量

字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')。

有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:

转义序列含义
\\\ 字符
\'' 字符
\"" 字符
\?? 字符
\a警报铃声
\b退格键
\f换页符
\n换行符
\r回车
\t水平制表符
\v垂直制表符
\ooo一到三位的八进制数
\xhh . . .一个或多个数字的十六进制数

字符串常量

字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。

定义常量

在 C++ 中,有两种简单的定义常量的方式:

  • 使用 #define 预处理器。
  • 使用 const 关键字。

杂项运算符

下表列出了 C++ 支持的其他一些重要的运算符。

运算符描述
sizeofsizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
,逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
.(点)和 ->(箭头)成员运算符用于引用类、结构和共用体的成员。
Cast强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。

常用库函数

1、max函数|C++返回最大值

在algorithm头文件中

2、min函数|C++返回最小值

在algorithm头文件中

3、cin.getline()、getline()、gets()、cin.get(),getchar()

cin.getline(str,20);//接收一行字符串,可以接收空格
cin.getline(str,20,'#');//接收一行字符串,可以接收空格,遇到#结束

string s;
getline(cin,s);//接收一行字符串,可以接收空格
getline()和cin.getline()很类似,cin.getline()属于istream流,需要包含头文件<iostream>
而getline()属于string流,需要包含头文件<string>,是不一样的两个函数

char str[20];
gets(str);//接收一行字符串到字符数组里面,可接收空格

char ch;

cin.get(ch);//用来接收一个字符

char str[20];

cin.get(str, 20);//接收一行字符串,可以接收空格

char ch;

ch = getchar();//不能写成getchar(ch)

4、栈

(先进后出)

头文件:#include<stack>

声明一个栈:stack <数据类型> 数据名  如:stack <int> a

用法:

a.push();   //进栈一个元素
a.pop();   //从栈顶出栈一个元素
a.empty();   //为空返回true,否则返回false
a.top();   //返回栈顶元素,但不删除成员
a.size();   //返回栈的大小

5、队列

(先进先出)

头文件:#include<queue>

声明一个队列:queue <数据类型> 数据名  如:queue <int> q

用法:

q.push();  //进队一个元素  
q.pop();  //在队首出队一个元素   
q.empty();  //为空返回true,否则返回false
q.front(); //返回队首元素 ,但不删除元素
q.back();  //返回队尾的元素 ,也不删除元素
q.size();  //返回队列的大小

 6、双端队列

头文件: #include < deque >

deque a(10); //创建一个有10个元素双端队列a,初始值都为0
a.push_front(0);//在头部加入数据0
a.push_back(11);//在尾部加入数据11
a.pop_front();//在头部删除数据
a.pop_back();//在尾部删除数据
a.resize(num);//重新指定队列的长度
a.size() //返回容器中实际数据个数
a.max_size() //返回容器中最大数据的数量
可以像使用数组一样输入或输出a[i]

 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值