C/C++面试题

1、static的作用

1-修饰局部变量

1.概念:当使用static关键字修饰局部变量时,该变量就变成了静态局部变量。这意味着它不再是传统的自动存储期变量,而是具有静态存储期。

2.作用域:静态局部变量的作用域确实没有变化,它仍然是在其定义的局部范围内,即它所在的代码块(例如函数体)内部。在作用域外,该变量是不可见的。

3.生存期:静态局部变量的生存期与全局变量类似,都是全局的。这意味着静态局部变量在程序开始执行时就已经存在,并且直到程序结束才会被销毁。这与普通的局部变量不同,普通局部变量在函数被调用时创建,在函数返回时销毁。

4.特点:静态局部变量的初始化只会在第一次进入包含它的函数时发生。之后,每次函数被调用时,该变量都会保留上一次函数返回时的值,而不是被重新初始化。这是静态局部变量与普通局部变量之间的主要区别。

插曲:

外部链接

  • 外连接允许其他源文件或库访问的函数和变量。如果一个名称(如函数或变量)对编译单元(.cpp文件)来说不是局部的,那么在链接的时候,其他的编译单元可以访问它,也就是说它可以和别的编译单元交互。
  • 当使用extern关键字标记函数或变量时,它们就具有外连接。这意味着这些函数或变量可以在其他源文件中使用。例如,在一个源文件中定义了一个全局变量或函数,并在另一个源文件中使用extern关键字声明它,那么后者就可以访问前者定义的变量或函数。

内部链接

  • 内连接意味着函数和变量只能在定义它们的源文件中使用。如果一个名称对编译单元来说是局部的,那么在链接的时候,其他的编译单元无法链接到它,且不会与其他编译单元中的同名标识符相冲突。
  • 默认情况下,如果没有使用extern标识符,函数和变量将具有内连接。此外,使用static关键字也可以明确指定内连接。这意味着即使在其他源文件中定义了具有相同名称的函数或变量,编译器也不会产生冲突,因为每个源文件都有自己的独立作用域。

2-修饰全局变量

1.概念
static修饰全局变量时,该全局变量的链接属性从外部链接变为内部链接。这意味着该全局变量仅在其定义的源文件中可见,而在其他源文件中是不可见的。

2.作用域
全局变量的作用域是整个程序,包括所有的源文件。但是,当全局变量被static修饰后,其作用域并没有改变,仍然是全局的。但是,它的可见性被限制在了定义它的源文件中。

3.链接属性
通常,全局变量具有外部链接属性,这意味着它们可以在多个源文件之间共享和访问。但是,当全局变量被static修饰后,其链接属性变为内部链接,这意味着该变量只在定义它的源文件中可见,其他源文件即使使用相同的变量名也不会冲突。

因此,static修饰全局变量的主要作用是限制其可见性,确保它在其他源文件中不会被误用或产生命名冲突。这对于创建只在特定源文件中使用的辅助变量或计数器非常有用。

3-修饰函数<

相关推荐

  1. 【前端工程化面试】什么是 CI/CD

    2024-03-15 19:36:02       27 阅读
  2. JVM 面试——CMS和G1的区别

    2024-03-15 19:36:02       21 阅读
  3. <span style='color:red;'>面试</span><span style='color:red;'>题</span>

    面试

    2024-03-15 19:36:02      16 阅读
  4. 面试

    2024-03-15 19:36:02       5 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 19:36:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 19:36:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 19:36:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 19:36:02       20 阅读

热门阅读

  1. 使用 Array.prototype.with 更新不可变数组

    2024-03-15 19:36:02       19 阅读
  2. Linux编辑定时任务异常:用户密码过期导致

    2024-03-15 19:36:02       16 阅读
  3. Qt自定义标题栏的多屏适配

    2024-03-15 19:36:02       20 阅读
  4. 【C语言】Traps in C Bitfield

    2024-03-15 19:36:02       19 阅读
  5. AIX7.2下安装python3

    2024-03-15 19:36:02       22 阅读
  6. 微服务架构 | 架构演进

    2024-03-15 19:36:02       19 阅读
  7. CISP 4.2备考之《计算环境安全》知识点总结

    2024-03-15 19:36:02       22 阅读
  8. Python常用模块06——requests

    2024-03-15 19:36:02       19 阅读