C++复习

1>命名空间

std::cout<<"..."<<std::endl;

using编译指令,可以使该命名空间的所有名称都可用。

方法一:using std::cout;

方法二:using namespace std;

从而实现如下语句的可用:

cout<<"..."<<endl;


将using namespce std 放在函数定义前,有效范围是该文件中所有函数。

将其放在函数定义内,有效范围是该函数内。


2>重载基础

如上的<<插入运算符同样也是左移位;

*是乘法,也是对指针的接触占用;

&既表示地址运算符,又表示按位与。


3>控制符endl和换行符“/n”

endl保证了程序运行前刷新输出(即将其立即显示在屏幕上),“/n”则不可以,以为着有些系统中,输入信息后才会出现提示。

换行符是一种转义序列。


4>代码风格

函数名称相关的()附近没有空白


5>两条cin.get()

第一条输入数字按Enter键,作用为读取输入,第二条暂停,直到按下Enter。

其中cin是istream类中的一个成员,get()是成员函数,


6>可参考的编码约定

//const type name = value;

const int Months  =12;//其中常量首字母大写

#define MONTHS 12;//其中整个单词大写;

const 比define 好 ,能明确指定类型。其次,可以使用定义域规则,将定义限制在特定的函数或文件中。第三,可以将const用于更复杂的结构中。


7>浮点常量

一般被保存为double型,如想保存为float,在8.24后加f或F,如8.24f


8>类型转换

①初始化和赋值时进行的转换

int debt = 7.2E12

右边数据无法被保存,输出数据后与原数据的误差不可忽略(输出可能是16万多,而且系统不同输出不同)

②以{}方式初始化

这种初始化一般给复杂的数据结构提供值列表,列表初始化不允许缩窄,即变量的类型可能无法表示他给的值。例如,不允许将整型转换为浮点型。

int x = 66;

char c ={x};

以上用法不被允许,因为列表中的X是一个变量,值可能很大,编译器跟踪x被定义到用x给c赋值的过程。

③表达式中的转换

一些类型在出现时就会自动转换,有些类型与其他类型同时出现在表达式中将会出现转换。

④传递参数时的转换。

⑤强制类型转换。

ex1.

float x = 0.0;

y = int(x);

ex2.

char ch = 'z';

cout<<int(ch)<<"="<<static_cast<int>(ch)<<endl;//显示ASCII码


9>auto声明

auto x = 0.0;//double类型

auto y = 0;//int类型


10数组的初始化

只有定义数组时才能初始化,也不能将一个数组赋给另一个数组。

合法的如下

int a[3] = {0,1,2};

int a[2] = {1};//只给首个赋值,其他为0

另外,C++列表初始化增加了一些功能

也可省略等号 double a[3]{ 1.2e4, 2.4e-4, 0};

也可不包含任何元素的赋值,全部赋值为0  double a[3]{};

注意:列表初始化不可以进行缩窄转换

long a[2] = {2, 3.0}//not allowed 将浮点型转换为整型属于缩窄转换,即使小数位为0

char a[2] = {'a', 1122011} //not allowed 此处char为8位 那么1122011超出范围


11.字符串

①C style string

以空字符结尾!

char[4] = {'l','u','v','u'};

char[5] = {'l','u','v','u','/0'};

这两个都是字符数组。

如果是第一种,会打印出三个字符,并将内存中之后的字节当成要打印的字符,知道遇到空字符停止。

如果是第二种,会只打印前三个字符。

用一个引号括起字符串,即将字符数组初始为字符串,被称为字符串常量,或字符串字面值。用引号括起的字符串,已经隐式的包括了结尾空字符,因此不用显式地包括他了。但此时需要确保,数组应足够大,大小应该算上结尾空字符。
注意: “s” = 's'和‘/0’拼接在一起。
另外,cout<<"cou"<<“t” 这样拼接时中间不会有空字符

② 基于string类库


12.C++如何确定变量的类型?

除非有理由存储为其他类型,一般存储为int。首先看后缀L,UL(unsigned long),LU(long unsigned),其次考察长度。十六禁止数将被表示为unsigned int,这是因为十六进制常用来表示内存地址,而地址是没有符号的。

13.char及cout.put()用法

cin<<ch;(键入M)

cout<<ch;

此时打印出M,而不是77,cin将键盘输入的M转换为77,输出时cout将值77转换为所显示的字符M,cin和cout都是变量类型引导的。

char ch =‘M’;

int i = ch;

cout<<"The ASCII code for"<<ch<<"is"<<i<<endl;

ch = ch + 1;

i = ch;

cout<<"The ASCII code for"<<ch<<"is"<<i<<endl;

cout.put(ch);

cout.put('!');

显示为:

The ASCII code for M is 77;

The ASCII code for N is 78;

N !


13.string 类型与字符数组的区别

string对象可以被声明为简单变量,而不是数组。类设计能让程序自动处理string的大小,例如,str1的声明创建一个长度为0的string对象,但程序将输入读取到str1时,将自动调整str1的长度。

可以说,string类变量是一个表示字符串的实体,而char数组视为一个用于存储一个字符串的存储单元。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值