static关键字作用,指针和引用的区别

总结一下面试中常见的两个问题:static关键字作用,指针和引用的区别

Static关键字的作用

1、c语言中的作用

(1)隐藏:一个被声明为静态的变量和函数可以被文件内所有函数访问,但不能被文件外其他函数访问,即使该变量作了extern声明;

(2)Static局部变量只初始化一次,在重复调用函数数,使用的是Static局部变量下一次结果的值;也就是static所在语句只执行一次,之后遇到这条语句就直接跳过了

(3)存储在静态存储区,默认初始化为0,这是与堆栈区变量的重大区别;

(4)static全局变量只初始化一次,防止在其他文件单元中被引用;

(5)static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝.

2、c++中的作用

静态数据成员:

(1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。

(2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。

(3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若为对静态数据成员赋初值,则编译器会自动为其初始化为0

(4)静态数据成员既可以通过对象名引用,也可以通过类名引用。

静态成员函数:

(1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。

(2)非静态成员函数有this指针,而静态成员函数没有this指针。

(3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。

指针和引用的区别

(1)引用在创建时需要初始化,指针不必;

(2)引用在初始化后不能被修改为另一个对象的引用,指针可以;

(3)引用不能使用指向空值的引用(注:不能有引用的值为NULL),必须总是指向某个对象,指针可以;

(4)引用不需要测试合法性,指针需要。

(5)指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。

(6)有多级指针,但是没有多级引用,只能有一级引用。

(7)指针和引用的自增运算结果不一样。(指针是指向下一个空间,引用时引用的变量值加1)

(8)sizeof引用所得到的是所指向的变量(对象)的大小,而sizeof指针得到的是指针本身的大小。

(9)引用访问一个变量是直接访问,而指针访问一个变量是间接访问

(10)可以有const指针,但是没有const引用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值