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 出现在 * 前后,则指针和其指向的对象都是只读的,这个指针既不能被修改,也不能通过它来修改它所指向的变量。就像你有一个玩具,你既不能改变这个玩具本身,也不能改变这个玩具的颜色。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值