const修饰指针的情况分析
2012-05-14 15:03
405 查看
C语言关键字const是用来限定一个变量不允许被改变的修饰符,当它和指针结合的时候有下面2种情况:
1、const放在*前面, const char *p1, p1表示指向常量的指针,这时p1本身可以变化,也就是可以重新指向,但是指向的内容不能修改
2、const放在*后面, char* const p1, 意思是p1是一个const指针,指向一个字符串,这时p1本身不能改变但是指向的内容可以变化,也就是如下代码
上面第3行代码咋一看没问题,编译也没错,但是运行的时候就报错。原因在于p1指向的是一个常量字符串"hello",这里
等价于
所以上面出错的语句改成如下就不会有问题了:
1、const放在*前面, const char *p1, p1表示指向常量的指针,这时p1本身可以变化,也就是可以重新指向,但是指向的内容不能修改
const char *p1 = "hello"; p1++; // ok p1[0] = 'w'; // compile error
2、const放在*后面, char* const p1, 意思是p1是一个const指针,指向一个字符串,这时p1本身不能改变但是指向的内容可以变化,也就是如下代码
1 char* const p1 = "hello"; 2 p1++; // compile error 3 p1[0] = 'w'; // ok in compile
上面第3行代码咋一看没问题,编译也没错,但是运行的时候就报错。原因在于p1指向的是一个常量字符串"hello",这里
char* const p1 = "hello";
等价于
char msg[] = "hello"; const char* const p1 = msg;
所以上面出错的语句改成如下就不会有问题了:
char msg[] = "hello"; char* const p1 = msg; p1[0] = 'w';
相关文章推荐
- const修饰指针的情况分析
- 程序员面试(3):关于const修饰指针的情况
- const和#define的不同以及 const修饰指针的几种情况
- 总结函数的参数,指针参数及const修饰的情况
- 总结函数的参数,指针参数及const修饰的情况
- 关于const修饰指针的情况
- const 修饰指针的4种情况
- const修饰指针的四种情况
- VC++ const修饰指针的情况介绍
- 总结函数的参数,指针参数及const修饰的情况
- c++ const修饰指针
- const修饰指针时候的注意事项
- 关于const修饰指针
- C语言--const修饰指针解析
- 【翠字营】:const和指针组合 分析总结
- 小心const修饰的经过重新定义的(比如LPBYTE、PINT)指针的陷阱
- const修饰指针
- C语言--const修饰指针解析
- C++:带有const修饰的指针解读
- const修饰指针和引用的用法