const总结

1.

const类型也称为常类型,,定义const常量,具有不可变性。 const int i=100; 可以和宏定义一样,不变则以,一变都变。但是和#define不一样的是从汇编角度来看,const只给出对应内存的地址,而#define给出的是立即数。所以const定义的常量在程序运行过程中只有一份复制品,而宏定义的常量有若干个。
举例:

#define q=6

const int p=6;

int I=q;//编译期间进行宏替换,为I分配内存

int f=q;//再次进行宏替换,为f分配内存

int i=p;//为p分配内存,以后再不分配

int j=p;//不分配内存

2. const char*p, char const*p, char*const p,的区别问题

注意:看*和const谁离右边的定义指针名最近
①*离得近的话表示该指针指向一个常量字符串,不能通过该指针改变字符串的内容(指针指向的值不能改变);
②const离得近的话表示这是一个常量指针,指针指向的位置一开始就确定,不能改变。
其中:const char *p = char const *p;意义为*p内容不可变
char *const p;意义为p这个指针指向固定的地方,不能被改变
const char*p意义为p指向地方存的内容不可变

3.常应用

请看下面三段小程序

#include<iostream>
#include<string>
using namespace std;
void f( string &s)
{
cout<<s<<endl;
}
main()
{
f("rdtygdr dryhdft ");
return 0; 

}

第一段编译错误

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
void f(const string &s)
{
cout<<s<<endl;
}
main()
{
f("rdtygdr dryhdft ");
return 0; 

}

第二段正确 输出:rdtygdr dryhdft

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
void f(const string &s)
{
cout<<s<<endl;
}
main()
{
string a="rdtygdr dryhdft ";
f(a);
return 0; 

}

第三段正确 输出:rdtygdr dryhdft

第一段错误的原因在于”rdtygdr dryhdft “会产生一个临时对象,而在C++中,临时对象是const类型的,因此无法从非const转为const .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值