常量指针和指针常量
2014-04-14 23:11
148 查看
本文链接:http://blog.csdn.net/ncepuwanghui/article/details/23713253
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
//char *p1 = "Hello";//错误写法,会产生警告
/* 常量指针:
* 本身是一个指针,一个指向常量的指针,是变量
* 常量指针可以指向其他地址,但是所指地址单元的内容不能修改
* 常用来作函数形参,以保护实参不会被非法修改
*/
const char *p1 = "Hello";//正确写法=char const *p1 = "Hello";
cout << "p1 = " << (void*)p1 << endl;//字符串"Hello"存放的单元地址
cout << "*p1 = " << p1 << endl;//指针ptr所指单元内容
//cout << "*p1 = " << *p1 << endl;//只会打印'H'
//*p1 = 'h';//错误用法,不能修改p1所指地址单元的内容
p1 = "World";
cout << "p1 = " << (void*)p1 << endl;
cout << "*p1 = " << p1 << endl;
cout << "================================================" << endl;
/* 指针常量:
* 本身是一个常量,一个指针类型的常量
* 指针所指地址一旦初始化就不能修改,但是指针所指地址单元的内容可以修改
*/
char *q1 = new char('H');
char * const p2 = q1;
cout << "p2 = " << (void*)p2 << endl;
cout << "*p2 = " << p2 << endl;
*p2 = 'h';
cout << "p2 = " << (void*)p2 << endl;
cout << "*p2 = " << p2 << endl;
char *q2 = new char('W');
/*p2 = q2;//指针p2是常量,初始化后无法在修改
*cout << "p2 = " << (void*)p2 << endl;
*cout << "*p2 = " << p2 << endl;
*/
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
//char *p1 = "Hello";//错误写法,会产生警告
/* 常量指针:
* 本身是一个指针,一个指向常量的指针,是变量
* 常量指针可以指向其他地址,但是所指地址单元的内容不能修改
* 常用来作函数形参,以保护实参不会被非法修改
*/
const char *p1 = "Hello";//正确写法=char const *p1 = "Hello";
cout << "p1 = " << (void*)p1 << endl;//字符串"Hello"存放的单元地址
cout << "*p1 = " << p1 << endl;//指针ptr所指单元内容
//cout << "*p1 = " << *p1 << endl;//只会打印'H'
//*p1 = 'h';//错误用法,不能修改p1所指地址单元的内容
p1 = "World";
cout << "p1 = " << (void*)p1 << endl;
cout << "*p1 = " << p1 << endl;
cout << "================================================" << endl;
/* 指针常量:
* 本身是一个常量,一个指针类型的常量
* 指针所指地址一旦初始化就不能修改,但是指针所指地址单元的内容可以修改
*/
char *q1 = new char('H');
char * const p2 = q1;
cout << "p2 = " << (void*)p2 << endl;
cout << "*p2 = " << p2 << endl;
*p2 = 'h';
cout << "p2 = " << (void*)p2 << endl;
cout << "*p2 = " << p2 << endl;
char *q2 = new char('W');
/*p2 = q2;//指针p2是常量,初始化后无法在修改
*cout << "p2 = " << (void*)p2 << endl;
*cout << "*p2 = " << p2 << endl;
*/
return 0;
}
相关文章推荐
- const int *p和int * const p的区别(常量指针与指向常量的指针)
- 指针常量与常量指针的区别
- 空指针常量
- c++ const_cast操作符、指针常量和常量指针的解释
- 常量指针、指针常量的区分与相关
- 常量指针与指针常量的区别
- 常量指针(指向常量的指针)和指针常量
- 【C/C++语言】指针常量与常量指针的区别
- 常量指针与指针常量的区别
- 常量指针 和 指针常量
- 常指针与指针常量的区别(转帖)
- const用法之修饰指向常量的指针
- c++中指针常量,常指针,指向常量的常指针区分
- C常量指针 与指针常量区别
- 指针常量 常量指针 常量指针常量
- 常量指针和指针常量
- 常量指针与指向常量的指针
- 指针常量与常量指针(const用法总结)
- 常量指针运用, 指针和数组名的赋值,以及各自的内存空间问题 浅谈 !
- 常量指针、指针常量、野指针、空指针概念解析