暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

c语言经典面试题 - 关键字

囧囧妹 2022-08-22
232

点击上方蓝字【囧囧妹】一起学习,一起成长!

【static的作用】    

    • 在函数体内部,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

    • 在模块内,一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外的函数访问,是一个本地的全局变量。

    • 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用,即该静态函数被限制在声明它的模块内部使用。

【inline的作用】

    • inline修饰的函数只在本文件可见,所以实现都在头文件中实现

    • 基于实现而不是声明,所以inline不能加在函数声明前,只能加在函数实现前

    • 在编译时期展开,但是只是给编译器一个建议,编译器可能不会处理成inline,比如递归或者循环

    衍生问题:static和inline区别?

              • 作用域:都只在当前文件可见

              • 修饰:static可修饰变量和函数,inline只能修饰函数且修饰函数声明无意义

              • 展开方式:static函数在普通情况下不会被展开,只是在编译、链接时限制了作用域;在编译时若开启了O2或O3优化,编译器为了提高效率,会选择把static函数像inline一样在调用点展开

【register的作用】

请求编译器尽可能将变量存储到CPU内部寄存器中,而不是通过内存寻址访问,提高效率。注意:是尽可能不是绝对,因为cpu一共也就那么几个或者几十个寄存器,如果定义很多register变量,cpu寄存器也不够存储。
【const的作用】
    • const意味着只读,其修饰的量是一个常量
    • 给阅读代码的人传递有用的信息,告诉别人该量不可修改
    • 通过给优化器一些附加的信息,使用const可以产生更紧凑的代码
    • 合理使用const,可以保护那些不希望被修改的参数,防止被无意修改,减少bug产生
      衍生问题:const char *p;char *const p区别?
      const char *p:p的指向可以改变,但指向的内容不可以改变
      char *const p:p指向的内容可改变,指向不可改变
      这里只要记住const结合规则就行:const在星号左侧修饰指针指向的内容,在星号右侧修饰指针指向


觉得不错,点击“分享”,“赞”,“在看”传播给更多热爱嵌入式的小伙伴吧!

文章转载自囧囧妹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论