C语言与C++中static,const 关键字的区别

本文详细解析了C语言与C++中static关键字的不同用途,包括其在文件作用域与类中的表现;同时深入探讨了const修饰符在两种语言中的特性,及其在方法参数与返回值中的特殊含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在C语言中加了static 的变量或方法,表明这个变量或方法只能在本文件代码块中访问,外部的文件无法访问它(因为链接程序把它当作内部链接)static 变量存放在字段存取区内(同理方法内部的static 变量也是存放在这,而不是存放在stack中,所以方法执行时,它只初始化一次).例如:

static int value=20;

static int fun();

这种定义说明它们的访问权限只在本文件块内

2.在C++中static 有多种不同的解析,在文件块部,它的代表的意思是跟C语言一样,而它在类中代表着不同的含义,类中的static 变量或者static 代表它是属于这个类的,而不是属于类对象的(这点跟Java一样),所以它在内存中只存在一份内存.

3.c,c++const 在声明数据时都有代表是常量的意思,

a.  C语言中声明的const 数据它默认的链接是外部链接的(当然extern 也是外部链接),而且不能用作声明数组的长度(必须使用宏).

b.  C++文件内声明的变量它默认的链接却是内部链接,并且它可以用来声明数组的长度,当然它在方法里还代表着不同的意义.如:void fun(const char* ptr)代表ptr指向的内容不能改变; 而在类中定义的方法如:void Class::meth()const; 却代表着执行这个方法时不能改变类中的数据,同理,const int Class::meth()const 代表的是执行这个方法时,除了不能改变类中的数据,函数的返回值还是个int 常量.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值