const char *p;和char * const p的区别
2014-06-21 20:41
246 查看
const char *p; const修饰*p,所以*p是一个常量,不可修改。
char* const p; const修饰p,所以指针p是一个常量,不可修改。
上面程序想通过遍历字符串,把大写的L改为小写的l,但是由于p指针指向的值不可修改,*p='l'; 编译不能通过。
上面程序想通过遍历输出字符串,但是由于指针p是常量,p++编译不能通过。
总结:是指针常量还是常量指针,主要看const修饰谁。const char *p; 中的const修饰*p,故p指向的值不可修改。char *const p; 中的const修饰p,故指针p不可修改。
看下面的一些情况:
1,const int *a = &b
如果一定要修改呢?可以尝试以下解决方案。就是抓住p是变量,让指针p指向别的变量,或者直接改变所指向的变量。
方案1:
方案2:
2,int * const a = &b;
3,常量的定义必须先初始化。
char* const p; const修饰p,所以指针p是一个常量,不可修改。
#include<iostream> using namespace std; int main(void) { const char *p; p="I Love ShangHai"; while(p) { if(*p=='L') *p='l';//编译不能通过。error:表达式左值必须是可修改的值 *p不可修改 p++; } getchar(); }
上面程序想通过遍历字符串,把大写的L改为小写的l,但是由于p指针指向的值不可修改,*p='l'; 编译不能通过。
#include<iostream> using namespace std; int main(void) { char * const p="I Love Shang Hai"; while(p) { cout<<*p; p++;//编译不能通过。error:表达式必须是可修改的左值 指针p不可修改 } cout<<endl; getchar(); }
上面程序想通过遍历输出字符串,但是由于指针p是常量,p++编译不能通过。
总结:是指针常量还是常量指针,主要看const修饰谁。const char *p; 中的const修饰*p,故p指向的值不可修改。char *const p; 中的const修饰p,故指针p不可修改。
看下面的一些情况:
1,const int *a = &b
int b = 500; const int *a = &b; *a=600;//错误 const 修饰*a,所以*a是一个常量不可以修改
如果一定要修改呢?可以尝试以下解决方案。就是抓住p是变量,让指针p指向别的变量,或者直接改变所指向的变量。
方案1:
int b = 500; const int *a = &b; b=600; cout<<*a<<endl;//正确
方案2:
int b = 500; int c=600; const int *a = &b; a=&c; //虽然*a是常量,但是a仍然是一个指针变量 cout<<*a<<endl;
2,int * const a = &b;
int b = 500; int c=600; int * const a=&b; a=&c;//错误,const 修饰a,所以a不可修改。 cout<<*a<<endl
3,常量的定义必须先初始化。
int b = 500; int c=600; int * const a; //错误,没有初始化 const int *a ; //正确,*a是常量,但是a仍然是一个指针变量。
相关文章推荐
- const char*, char const*, char*const的区别
- char *const p;与 const char * p;的区别
- const char *,char const *,char * const的区别
- 【转】const char*, char const*, char*const的区别
- const char * a = "SSS" 与 const char a[] = "SSS" 的区别之一
- const char * 和char * const 的区别
- const char * 和char *const 区别
- const char *与char * const的区别
- const char*, char const*, char*const的区别
- const char*, char const*, char*const 的区别;指针常量,常量指针的区别
- const char*, char const* and char *const 的区别
- const char*, char const* and char *const 的区别
- 关于const char*, char const* and char *const 等的区别
- const char*, char const* and char *const 的区别
- 关于const char*, char const* and char *const 等的区别
- const char*, char const*, char*const的区别
- const char*, char const*, char*const的区别
- const char*, char const*, char*const的区别
- C程序:cont char *p 和 char* const p 区别及记忆方法
- char const * ,char *const, const char *的区别