C++面试题和笔试题(三)

目录

一、在C++中,局部变量、静态局部变量、全局 变量、静态全局变量各自的作用域和生命周期是怎样的?

二、描述const 关键字在指针和引用上的使用方式及意义,如const int *p与int const *p有何区别,又如何int*const p和const int* const p?


一、在C++中,局部变量、静态局部变量、全局 变量、静态全局变量各自的作用域和生命周期是怎样的?

  1. 局部变量:局部变量是在函数内部声明的变量,其作用域仅限于该函数内部。

    自己的理解:局部变量就像你在家里的小玩具,只能在家里(函数里面)玩。当你离开家(函数结束)的时候,玩具(局部变量)就不能玩了,下次再回家的时候,那个玩具可能就不是上次的那个了。
     
  2. 静态局部变量:静态局部变量是在函数内部使用 static 关键字声明的变量。与局部变量不同,静态局部变量的作用域仍然仅限于函数内部,但其生命周期从程序开始执行时就存在,直到程序结束。即使函数被多次调用,静态局部变量也只会被初始化一次。

    自己的理解:静态局部变量就像你在家里养的小金鱼。虽然你每次离开家(函数结束),但小金鱼还在家里,不会消失。下次你回家(再次调用函数)的时候,小金鱼还在,而且它还记得你上次喂它吃了多少食物。
     
  3. 全局变量:全局变量是在函数外部声明的变量,可以在程序的任何地方访问。全局变量的生命周期从程序开始执行时就存在,直到程序结束。全局变量可以用于在多个函数之间共享数据。

    自己的理解:全局变量就像家里的大电视,整个家里的人(整个文件里的代码)都可以看到它,都可以使用它。但是,如果你去了朋友家(其他文件),可能就看不到家里的那个大电视了。
     
  4. 静态全局变量:静态全局变量是在函数外部使用 static 关键字声明的变量。与全局变量不同,静态全局变量只能在声明它们的源文件中访问。静态全局变量的生命周期与全局变量相同,从程序开始执行时就存在,直到程序结束。

    自己的理解:静态全局变量就像家里的秘密宝藏。虽然它像大电视一样可以在家里看到,但是如果你去了朋友家(其他文件),即使告诉他们你家有宝藏,他们也找不到,因为这个宝藏只有你自己知道。
     

二、描述const 关键字在指针和引用上的使用方式及意义,如const int *p与int const *p有何区别,又如何int*const p和const int* const p?

const 关键字位置 指针或引用类型 能否修改指针的地址 能否通过指针修改值
const 在 *之前 const int *p 或 const int& r 不能
const 在 *之后 int* const p 或 int const& r 不能
const 在 * 前后 const int* const p 或 const int& const r 不能 不能
  • 如果 const 出现在 *之前,则指针指向的对象是只读的,可以修改这个指针本身,让它指向别的变量。就像你有一个玩具,你不能改变这个玩具本身,但是你可以把它从一个地方拿到另一个地方。
  • 如果 const 出现在 *之后,则指针本身是只读的,通过这个指针来修改它所指向的变量。就像你有一个玩具,你不能改变这个玩具本身,但是你可以改变这个玩具的颜色。
  • 如果 const 出现在 * 前后,则指针和其指向的对象都是只读的,这个指针既不能被修改,也不能通过它来修改它所指向的变量。就像你有一个玩具,你既不能改变这个玩具本身,也不能改变这个玩具的颜色。

相关推荐

  1. C++面试试题

    2024-03-13 00:36:03       49 阅读
  2. C++面试试题(五)

    2024-03-13 00:36:03       35 阅读
  3. 嵌入式C语言面试试题

    2024-03-13 00:36:03       33 阅读
  4. QtC/C++开发-常见面试试题

    2024-03-13 00:36:03       30 阅读
  5. Hive窗口函数试题面试

    2024-03-13 00:36:03       33 阅读
  6. 40 道高频 C++ 面试试题及答案

    2024-03-13 00:36:03       41 阅读
  7. promise面试试题

    2024-03-13 00:36:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 00:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 00:36:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 00:36:03       82 阅读
  4. Python语言-面向对象

    2024-03-13 00:36:03       91 阅读

热门阅读

  1. SQL常用函数

    2024-03-13 00:36:03       39 阅读
  2. 【Node.js从基础到高级运用】七、基本的网络编程

    2024-03-13 00:36:03       46 阅读
  3. 全栈开发的必备利器 Next.js

    2024-03-13 00:36:03       44 阅读
  4. Linux应用程序对异步通知的处理

    2024-03-13 00:36:03       40 阅读
  5. 框架和函数库的区别

    2024-03-13 00:36:03       42 阅读
  6. android pdf框架-5,生成pdf

    2024-03-13 00:36:03       41 阅读
  7. 深入理解Nginx日志级别

    2024-03-13 00:36:03       39 阅读
  8. 库表设计基本字段

    2024-03-13 00:36:03       38 阅读
  9. LLM(大语言模型)常用评测指标-MAP@R

    2024-03-13 00:36:03       42 阅读
  10. 使用Docker部署debezium来监控MySQL数据库

    2024-03-13 00:36:03       46 阅读