指针与常量

实例一:
#include<iostream.h>
main(){
int i, j=9;
const int ic = 100;
const int * ip = & ic;//ip可以改变,*ip不可以
int * const icp = & i; //icp不可以改变,*icp可以
//icp = &j;                    //err,报错为l-value specifies const object:左边的值是常量
*icp = 200;
ip=&j;
cout<<"i="<<i<<endl;
cout<<"j="<<j<<endl;
cout<<"*ip="<<*ip<<endl;
cout<<"*icp="<<*icp<<endl;
}
运行结果:
i=200  
j=9
*ip=9
*icp=200






实例二:
#include <iostream.h>
void mystrcpy(char * Dest,const char *Src)//*Src不可以改变,Src可以改变
{ while(*Dest++=*Src++); }


void main(){
char a[20]="How are you!";
char b[20];
mystrcpy(b,a);//*Src被初始化为数组a,然后Src在移动
cout<<b<<endl;
}
运行结果:
How are you!




实例三:
void main(){
char * const pc="aaaa";//定义指针常量 ,在定义时必须初始化
pc="bbbb";   //error C2166: l-value specifies const object,指针常量不能改变其指针值

*pc='a';       //ok
*(pc+1)='b'; //ok,
pc++='y';     //error C2166: l-value specifies const object
}




实例四:
void main(){
  int i;
const int ic;  //error C2734: 'ic' : const object must be initialized if not extern               
const int *pic;   //ok  
int *const cpi; //error C2734: 'cpi' : const object must be initialized if not extern
const int *const cpic;   //error C2734: 'cpic' : const object must be initialized if not extern

}


实例五:
void main(){
    int i=-1;
const int ic=i;
const int *pic=&ic;
int *const cpi=&ic;//   cpi是常指针,*cpi可以改变,那么意味着ic会因为*cpi而改变,但是ic是常量是不可以改变的,所以不对。可以改成:int *const cpi=&i等非常量值就可以了。
const int *const cpic=&ic;
 i=ic;
pic=&ic;
cpi=pic;// cpi是常指针
pic=cpic;
cpic=&ic;// cpic是常指针
ic=*cpic;//error C2166: l-value specifies const object
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值