C++学习笔记(持续更新中)
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:59
学习笔记
—2020.10.19—
1.main函数前加上数据类型原因
main函数的返回值返回给主调进程,一般情况下定义为int,并默认返回值为0时程序运行无错误,但是这一规定并非强制的。如果程序的运行结果不重要或者程序员不需要知道返回值,如所有的出错信息都已经在程序中有所体现,则可以省略返回值。在一些要求不严格的编译器比如VS、VC中可以把main定义为void,但是在一些比较严格的编译器中比如g++中则需要把main返回值定义为int。
2.int main()与int main(void)区别
int main()与int main(void)等价,但是前者表示对是否传入参数处于沉默状态,也就是说传不传参数都可以,而后者void表示不可以传入参数。
3.命名空间namespace
为什么要用命名空间,是因为有些名字可能会冲突,用命名空间解决这个问题。std是c++标准命名空间,是编译器自带的,如果达不到自己想要的效果,也可以自己定义一个mystd,用来输出。例如mystd::cout。
4.define 与 typedef
前者是在宏定义中,发生在预处理阶段,只是进行简单的字符串替换,不会进行检测,后者是发生在编译阶段,会进行数据类型检测。并且前者没有作用域的限制,后者有作用域的限制。
5.extern
首先我们要了解一个知识点,那就是一个变量可以申明很多次,但是只能定义一次。extern作用就是声明一个变量,比如extern int a;这条语句只是告诉程序有一个变量a,为int类型,但是没有为变量a开辟存储空间,只有在定义时才会给其分配空间:int a=10;这条语句定义了a=10。
6.static小计
首先我们看一下空间分配方式:全局变量、全局静态变量、局部静态变量储存在静态储存区,而局部变量则储存在栈里。一般情况下,一个全局变量被声明定义之后,如果存在多个源文件,那么在其他源文件也可以引用该变量,不过要先声明。而用static关键字修饰的变量,只在该源文件可被使用,也就是说其他源文件可声明定义相同名称变量,但是不能在未定义生声明情况下使用,即此时变量作用域为文件作用域,其他文件访问不了。static全局变量:改变作用范围,不改变储存位置;static局部变量:改变储存位置,不改变作用范围。
7.const小计
从右向左读;例如
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
const放在“*”左边,表示指针所指对象是只读的,也就是说可以改变指针的地址,但是里面保存的值不可改变;const放在 “*”右边,表示指针本身是只读的,指针地址不可更改,但是里面内容可以更改。
8.const与static
const定义的常量在超出其作用域时空间会被释放,而static定义的静态变量在函数执行之后也会保存在静态储存区,不会被释放,直至程序结束。