"extern"和"static"影响编译器对内联函数的处理
inline关键字是对编译器的内联建议。编译器会根据实际情况决定是否内联当
前函数是否内联。
当一个内联函数同时也是extern函数时,如果编译器决定内联这个函数,那么
没什么问题;如果编译器决定不内联这个函数,它就会给这个函数创建常规且
唯一的函数实现,并且所有其他不内联的调用点都将调用这个实现。
当一个内联函数同时也是static函数时,如果编译器决定内联这个函数,那么
同样也是没什么问题的;如果编译器决定不内联这个函数,那么在当前的编译
单元里,这个函数就跟static函数一样,就会创建一个当前编译单元唯一的函
数实现,所有当前编译单元的函数调用,都会指向这个实现。
①用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以.并且 const 修饰的变量在定义的时候就给它赋初值,否则报错.
② int const p 和 const int p等价,const修饰p,即p所指内存中内容不可改,但p本身可改,指向谁谁的内容就不可改; int * const p修饰p,
即p本身不可改,但其所指内存中的内容(即p)可改
③const修饰指针参数,防止函数体内对指针所指内容进行修改;值传递参数则本身不需要const修饰
④给以"指针传递"方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,且只能被赋给加const 修饰的同类型指针。如果函数返回值采
用"值传递方式",由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。