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开辟内存,返回堆上的地址用指针接收
发布了44 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/He3he3he/article/details/84592000