Const与Const的用法

Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常
类型的变量或对象的值是不能被更新的。
Const的作用:
(1)可以定义常量: 即 const int a=5;
a就是一个被const修饰的常量,它在程序运行期间是无法被改变的!
(2)保护被修饰的东西: 例如一个函数的首部为 void fn(const int* p)
p是一个指针变量,函数fn接收到的是一个变量的地址,而由于在地址传参时我们可以通过地址改变原本的变量值,而我们如果并不想改变他,我们就可以使用const修饰,这样就可以保护其不被更改!
(3)可以很方便的调整参数:const和宏定义一样,我们可以通过更改const修饰的值,很方便的使程序得出不一样的结果,大大提高了程序的通用性!

Const的使用:
(1)const定义常量:
它的含义是使用const修饰的变量在程序运行期间是无法被改变的。
例如 const int a=5; a在程序运行过程中不允许被改变。

(2)在使用指针时使用Const:
const修饰一级指针

  1. const char p
    限定变量p为只读。这样如p=2这样的赋值操作就是错误的。
  2. const char *p
    p为一个指向char型数据的指针,const只限定了p所指向的对象无法被改变,这样说来,p=&a或p++等操作都是合法的,而如果是 p=1,这样的操作就是错的,因为这样子是妄图修改常量。
    3.char * const p
    const在p前面,这样子表示指针变量p是被const修饰的,p是不能被更改的,所以&p=a,p++等操作都是不合法的,但是
    p=1这种操作是合法的。
    4.const char * const p
    char前面与p前面全部都有const,所以p是不能更改的,p也是不能被更改的。
    const修饰二级指针
    1.const char **p
    p是一个指向指针的指针,而const在char前面,说明const只修饰最终的对象,即**p=5是非法的,而
    p=&p1或者p++这些操作都是合法的。
    2.const char * const *p
    const修饰了char 也修饰了*p,所以只有p++这种操作是正确的,像**p=3或者 *p=&p1这种操作都是错误的。
  3. const char* const* const p
    const修饰了char 也修饰了* 也修饰了p所以p++,**p=3或者 *p=&p1这种操作都是错误的。全部关于p,*p,**p的操作都是非法的。

(3)在函数参数中使用const:

char* strcopy(char* dest,const char* src)  
{  
    char* temp=dest;  
    if(dest==NULL||src==NULL)  
    return ;  
    while(*dest++=*src++);  
    return temp;  
}  
int main()  
{  
    char s[100];  
    char s1[]="tom & jerry";  
    char *p=NULL;  
    p=s1;  
    strcopy(s,p);  
}  

这是一个可以实现链式表达式的字符串复制函数
我们可以看到这个函数的函数首部为 char* strcopy(char* dest,const char* src)
因为我们需要传递字符串,所以需要传递他的地址,但我们又不想改变字符串的原本的值,所以使用了const修饰了对应的字符串指针,如此一来他的值就无法被改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值