点击上方蓝字【囧囧妹】一起学习,一起成长!
【static的作用】
在函数体内部,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
在模块内,一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外的函数访问,是一个本地的全局变量。
在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用,即该静态函数被限制在声明它的模块内部使用。
【inline的作用】
inline修饰的函数只在本文件可见,所以实现都在头文件中实现
基于实现而不是声明,所以inline不能加在函数声明前,只能加在函数实现前
在编译时期展开,但是只是给编译器一个建议,编译器可能不会处理成inline,比如递归或者循环
衍生问题:static和inline区别?
作用域:都只在当前文件可见
修饰:static可修饰变量和函数,inline只能修饰函数且修饰函数声明无意义
展开方式:static函数在普通情况下不会被展开,只是在编译、链接时限制了作用域;在编译时若开启了O2或O3优化,编译器为了提高效率,会选择把static函数像inline一样在调用点展开
【register的作用】
const意味着只读,其修饰的量是一个常量 给阅读代码的人传递有用的信息,告诉别人该量不可修改 通过给优化器一些附加的信息,使用const可以产生更紧凑的代码 合理使用const,可以保护那些不希望被修改的参数,防止被无意修改,减少bug产生 衍生问题:const char *p;char *const p区别? const char *p:p的指向可以改变,但指向的内容不可以改变 char *const p:p指向的内容可改变,指向不可改变 这里只要记住const结合规则就行:const在星号左侧修饰指针指向的内容,在星号右侧修饰指针指向
文章转载自囧囧妹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




