实例一:
#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=⁣
int *const cpi=⁣// cpi是常指针,*cpi可以改变,那么意味着ic会因为*cpi而改变,但是ic是常量是不可以改变的,所以不对。可以改成:int *const cpi=&i等非常量值就可以了。
const int *const cpic=⁣
i=ic;
pic=⁣
cpi=pic;// cpi是常指针
pic=cpic;
cpic=⁣// cpic是常指针
ic=*cpic;//error C2166: l-value specifies const object
}
#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=⁣
int *const cpi=⁣// cpi是常指针,*cpi可以改变,那么意味着ic会因为*cpi而改变,但是ic是常量是不可以改变的,所以不对。可以改成:int *const cpi=&i等非常量值就可以了。
const int *const cpic=⁣
i=ic;
pic=⁣
cpi=pic;// cpi是常指针
pic=cpic;
cpic=⁣// cpic是常指针
ic=*cpic;//error C2166: l-value specifies const object
}