c++的编译:
1.static function()表明该函数体只在本文件生效,外部不可见,为内部函数
2.inline function()表示该函数在被调用时,直接替换为函数体。
3.为避免link(链接)时出现函数名重复(多重符号,相同函数在项目中多次定义),通常头文件中只声明而不写函数定义,函数体定义在翻译单元(cpp文件)中。因此一般以头文件的形式进行函数声明。引入头文件时由于只声明而没有函数体,就不会报错
4.如果被调用的函数在同文件的后面,将会因为找不到函数而报错。如果放在前面就可以,放到任何一个文件提前声明了也可以
数据类型:
1.数据类型最核心的特点是占用内存大小。数据类型大小通常为:char(1 byte)short(2 bytes)int(4 bytes)long(4 bytes)long long(8 bytes),默认为有符号数,即符号必须占据一位。在数据类型前加unsigned关键字,将表示这是一个无符号数,例如unsigned int,可以表示最大值为2³²(约43亿)的正整数
2.通常,char用来表示字符,其余用来表示数字。这将会导致使用char输入数字会输出该数字asc码对应的字符;而使用short输入字符会输出该字符对应asc码的数字。
3.浮点数类型:float(4 bytes)double(8 bytes)默认为double,如果数字后加F或f则表示为float。
4.bool(1 byte):1(计算机默认,但也可写为除0外任意数字)真 0假。
5.sizeof(数据类型)可查数据类型大小。btw,可以在这些已有数据类型的基础上自定义类型。
6.所有数据类型的函数都必须有返回值,且该函数数据类型就是返回值的数据类型,除了void可以不返回任何值,默认return 0
头文件:
1.#include <>表示include目录相对路径下的文件;#include ""可表示include目录与当前目录相对路径下的文件,但一般只用于当前文件。
2.include目录下带.h的是c语言的,不带的是c++的
c++的语言结构:
1.执行if语句所用的开销较大,尽量不用。
2.for和while循环并没有本质区别,二者都可以实现代码多次执行的功能。当条件需要改变时或者需要执行指定次数或处理已知长度数组时通常用for,而条件恒定时通常用while。for需要在循环前声明一个条件变量,而while可以直接用已有的变量或函数调用后的结果。
3.控制流语句:continue(仅用于循环):进入循环的下一个迭代;break(可用于循环和switch语句):跳出循环;return(随处可用):直接退出函数,在void类型函数中可以单独出现,但其他类型需要给出返回值(如果没有要返回的,可以返回0表示成功运行)。
指针:
1.指针就是一种储存内存地址的十六进制整数。它的类型是对于它储存的内存地址所指向的变量类型的假设,并不影响它本身的性质。但在逆向引用时需要设置类型,为了划分一定的内存空间用来存储数据。(例如,把8存储到某一地址中,如果是int类型就存储08 00 00 00,如果是short类型就存储08 00)
void* ptr = 0/NULL/nullptr; 设一个空指针
指针可以直接创建也可以指向已有变量地址。
int var = 8;
int* ptr = &var;
*ptr = 10;//把ptr所指内存地址上的值赋为10
//var==10
2.&var:var的内存地址的值。*ptr:ptr记录的内存地址上所存储的数据。
3.char* buffer = new char[8]表示将8个char类型数据的空间(8*1=8,因此是八个字节)划分出来,buffer就指向这个空间开始的地址。memset(ptr, x, y):将地址为ptr的y字节大小的内存空间的值设置为数值x。例如,memset(buffer, 0, 8)表示将buffer指向地址的八个字节的内存的值都设置为0。delete[] buffer表示删除指针,释放该空间(与new []成对出现)
4.char** ptr = &buffer为双指针,表示储存“所指向的另一指针的内存地址”的值的内存地址。
未完待续