type
date
status
slug
summary
tags
category
icon
password
网址
1.C++统一初始化
初始化列表
可变参
可以在运行时取任意的实参个数并以据实参的个数自动处理不同实参的情形,或者至少可以在运行时指定任意的实参个数。
. . . :占位符–作为参数–可变(个数,类型)

printf如何打印?//C
从左向右存,字符串(首地址),字符(4字节),“%d %c %s\n” 存于fmt
可变模板参

2.输入输出
stdin,stdout,stderr
stdin:标准输入(键盘)
stdout:标准输出(显示器)
stderr:标准错误(屏幕)
当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,
一个程序要运行,需要有输入、输出,如果出错,还要能表现出自身的错误。这就是要从某个地方读入数据、将数据输出到某个地方,这就够成了数据流。
std就是c++标准库中所使用的所有标识符都是在同一个特殊的命名空间(std)中来定义的
。如果没有这条命令可以使用std::cout来调用输出流对象。
命名空间的作用是建立一些相互分隔的作用域,把一些全局实体分隔开来,以免产生名字冲突。
C&&C++
输入输出流(C++标准库无.h)
*exa.
1. ,并且回到行首,,如果只有,那么在屏幕上是没有输出的
2、关于 在Windows下用enter换行等于在最后加上,写入文章的也是
在Linux用enter换行等于最后加上,写入文章的也是
所以有时候会遇到Linux的文件到Windows下打开就只有一行
标准输入设备
cin:读取标准输入的istream对象,对应于标准输入流(关联到标准输入设备,通常为键盘)。用来读取用户在终端上的输入内容,通过input运算符(>>)将输入内容定向到具有适当类型的对象身上;
cout:写到标准输出的ostream对象,对应于标准输出流(关联到标准输出设备,通常为显示器)。用来将信息写到用户的终端上,output运算符(<<)可以将数据定向到cout
*exa.
cout //printf(); stdout();
cout:写到标准输出的ostream对象,对应于标准输出流(关联到标准输出设备,通常为显示器)。用来将信息写到用户的终端上,output运算符(<<)可以将数据定向到cout
cerr //stderr;
cerr:输出到标准错误的ostream对象,对应于标准错误流(关联到标准输出设备,通常为显示器),常用于显示程序错误信息;
clog
clog:是输出代码时所需要输出错误信息时的所需代码,然而clog在缓冲区满了或遇到endl时才输出.
c++11 标准
寄存器
寄存器:给特定功能的的单元取的别名这个别名就叫做寄存器,所以寄存器只是特定功能的的单元的名字而已
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86
汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。 EAX
是”累加器”(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是”基地址”(base)寄存器, 在内存寻址时存放基地址。
ECX 是计数器(counter),
是重复(REP)前缀指令和LOOP指令的内定计数器。 EDX
则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做”源/目标索引寄存器”(source/destination
index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.
EBP是”基址指针”(BASE POINTER),
它最经常被用作高级语言函数调用的”框架指针”(frame pointer).
在破解的时候,经常可以看见一个标准的函数起始代码;
ESP
专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。
汇编指令
mov
作用:把一个字或者字节的操作数从源地址传送到目标地址
mov ebp,esp ;EBP设为当前堆栈指针
MOV指令,能实现以下操作:
CPU内部寄存器之间数据的任意传送(除了码段寄存器CS和指令指针IP以外)。
立即数传送至CPU内部的通用寄存器组(即AX、BX、CX、DX、BP、SP、SI、DI),给这些寄存器赋初值。
CPU内部寄存器(除了CS和IP以外)与存储器(所有寻址方式)之间的数据传送,可以实现一个字节或一个字的传送。
能实现用立即数给存储单元赋初值。
call 作用:可以实现调用一个子程序,在子程序里使用ret指令结束子程序的执行并返回主程序(类比C语言中的main函数调用cube函数进行理解),主程序继续往下执行。
call 标号 或者call far 标号
ret 或者 ret n
push & pop
作用:将寄存器或者存储器中的数据按照堆栈操作的规则进行出入栈
push ebp ;保存当前ebp
ret
作用:会把栈中原先存入的地址出栈,并送入到ip寄存器里,ret指令等价于”pop
ip“的效果(没有pop ip这样的指令,是非法的)
ret n
总结:
使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream>头文件以及std标准命名空间。endl 相当于 'n';