变量与函数的作用域

自己在写C,C++代码的时候经常会不注意变量与函数的作用域,以及他们的作用,因此在这里总结一下(从网上调查的结果)。

内存中的5个区:

1.全局区(静态区)

2.常量区

3.代码区

4.栈区

5.堆区


变量:

局部变量存放在内存的栈区;局部变量在定义它的函数内有效,但是函数返回后失效。

全局变量存放在内存的全局数据区;整个工程文件内都有效。

静态全局变量存放在内存的全局数据区;只在定义它的文件内有效。

静态局部变量存放在内存的全局数据区;只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失。

#define定义:常量,宏不是存在内存的哪个位置。而是编译的时候直接进行替换。

const定义:常量,存放在内存的只读区域。

定义的字符串:常量,存放在内存的只读区域。

类中的静态变量它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。由于类中的静态成员变量是不属于一个对象的,所以在使用的时候推荐如下写法:类名::静态成员变量名。


函数:

普通的静态函数:只能在声明文件中调用。

类中的静态函数在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。虚函数不能定义为static

内联函数:在编译时类似宏替换,使用函数体替换调用处的函数名。主要用于频繁执行的函数,这样免去了很多函数出入栈的操作。

const函数 

1.const函数与同名的非const函数是重载函数

2.const函数中只能调用其他的const函数,不能调用非const函数,因为对象调用函数是需要传递对象自己,const函数中的*this是常量,非const函数中的*this是变量,因此不可以调用(除非去除*this的const属性);

3. 不能在const函数中修改所在类的对象的数据,因为const函数中的*this是常量,同样只能访问const函数;

4.const对象只能调用const函数 ,但是非const对象可以调用const函数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值