c++学习(一)常量 全局变量 局部变量 静态变量 外部变量

1.常量

c++中常量修饰符为const,告诉编译器这个名字是常量。如果定义了某对象为常量,然后试图想修改它,编译器会报错的。

const int x=10;

注意:

1)在C中,编译器对待const如同变量一样,只不过带有一个特殊的标记,意思是:“不要改变我”。

2)在c++中,一个const常量必须有初始值

2.全局变量

全局变量顾名思义就是在所有函数体(包括main函数)的外部定义的,程序的所有部分(甚至外部文件中的代码)都可以使用它的,这也就是说全局变量不受作用域的影响,总是可用的。

#include<iostream>
using namespace std;
int globe;//全局变量
static int satus;
void digui(int a)
{
	if(a<10)
	{
		cout << a << ' ';
		digui(a + 1);
	}
}
void main04()
{
	digui(2);
}

注意:

1)想在一个文件中使用另外一个文件定义的全局变量,可以用extern关键字,那么就可以在该文件使用了。

extern int globe

 2)全局变量的生命周期一直到程序结束。

 3.局部变量

局部变量出现在一个作用域内,它们是局限与一个函数的。因此常被称为自动变量,因为它们在进入作用域是自动生成离开作用域时自动消失,常用关键字auto,但是局部变量默认为auto,所以没有必要声明auto。

4.静态变量

静态变量常用static关键字修饰,通常情况下,函数中定义的局部变量在函数作用域结束时消失。当再次调用这个函数时,再被创建,再被初始化,但是想局部变量的值在程序的整个生命周期都仍然存在,我们就把它定义为static静态变量,具有记忆的功能。

但是为啥不使用全局变量呢?static变量的优点在于在函数范围之外它是不可用的,所以不容易被修改

static还可以作用于函数和外部变量,它的意思是“在文件的外部不可以使用这个名字”。函数名或者变量名是局限于文件的

5.外部变量

外部变量常用关键字为:extern,他告诉编译器存在一个变量和函数,即使在当前编译的文件中没看见他,但是可能存在当前文件的后面或者另外的一个文件。

6.内存分区

程序运行前 :

 代码区(存放CPU执行的机器指令):

  • 共享的,共享的目的是对于频繁被执行的程序,只需在内存中存放一份代码即可
  • 只读的,使其只读的原因是防止程序以外地被修改了它的指令。

全局区(存放全局变量、静态变量、字符串常量、全局常量):

  • 该区域的数据在程序结束后由操作系统释放。

程序运行后:

栈区(局部变量、形参):

  • 编译器自动分配和释放,存放函数的参数、局部变量等
  • 注意:不要反悔局部变量的地址

 堆区:

  • 程序员分配释放,如果程序员不释放,程序结束时由系统回收
  • c++中利用new开辟内存,返回堆上的地址用指针接收

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火柴的初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值