/*30_C++_指针和const限定符txwtech
特殊的指针
1.指向const常对象的指针
2.const指针,一旦指向一个对象,就不可以修改,不能指向其它的
3.指向const对象的const指针,//定义时必须初始化。数据不可以修改。
指针和typedef
理解复杂的const类型声明
例如:
const dobule pi=3.14159;
//---1
const dobule *p;// p普通指针,dobule类型是个常量,指向常量的double(普通p->常double)
//---2 (一旦指向一个对象,就不可以修改,不能指向其它的)
double *const p=π//p是常指针,指向的double,double不是常量(常p->普通double)
//---3
const double *const p=π//p是常指针,指向常量的double的常指针(常p->常double)
*/
cout << "ps:" << *ps << endl;//没有添加#include <string>
//cout << "ps:" << s << endl;//严重性 代码 说明 项目 文件 行 禁止显示状态
//错误(活动) E0349 没有与这些操作数匹配的 "<<" 运算符 ca30a_demo C : \Users\TT2018\Documents\Visual Studio 2017\Projects\ca30a_demo\ca30a_demo\ca30a_demo.cpp 34
/*30_C++_指针和const限定符txwtech
特殊的指针
1.指向const常对象的指针
2.const指针,一旦指向一个对象,就不可以修改,不能指向其它的
3.指向const对象的const指针,//定义时必须初始化。数据不可以修改。
指针和typedef
理解复杂的const类型声明
例如:
const dobule pi=3.14159;
//---1
const dobule *p;// p普通指针,dobule类型是个常量,指向常量的double(普通p->常double)
//---2 (一旦指向一个对象,就不可以修改,不能指向其它的)
double *const p=π//p是常指针,指向的double,double不是常量(常p->普通double)
//---3
const double *const p=π//p是常指针,指向常量的double的常指针(常p->常double)
*/
#include <iostream>
#include <string>
using namespace std;
void doA(const int *p)//常指针避免参数修改
{
}
typedef string *pstring;
int main()
{
string s("Hello");
pstring ps;
//string *ps;
ps = &s;
cout << "ps:" << *ps << endl;//没有添加#include <string>
//cout << "ps:" << s << endl;//严重性 代码 说明 项目 文件 行 禁止显示状态
//错误(活动) E0349 没有与这些操作数匹配的 "<<" 运算符 ca30a_demo C : \Users\TT2018\Documents\Visual Studio 2017\Projects\ca30a_demo\ca30a_demo\ca30a_demo.cpp 34
const pstring cstr=&s;//cstr是什么?=string *const cstr;,cstr就是常指针,需要初始化,(常p->普通string),p就是指针
const string * cstr2;//普通p->常string)
string *const cstr3=&s;//(常p->普通string)
double a = 1.2;
double *p = &a;
cout << "ps:" << *p << endl;
*p = 1.8;//普通指针可以修改其值
const double pi = 3.14;//常double
//p = π//错误,p不是const(常p->常double)
const double *cptr;
cptr = π //(常p->常double)
//getchar();
cptr = &a;//(常p->普通double)
//*cptr=1.5; //常p不可以修改值
int errNum = 0;
int nNum = 9;
int *const curErr = &errNum;//(一旦指向一个对象,就不可以修改,不能指向其它的)(常p->普通int)
//curErr = &nNum;//这个是错误的
const double *const pi_ptr = π//定义时必须初始化。数据不可以修改。
//pi_ptr=&a;//不能指向其它对象
//*pi_ptr=3.19;//错误,数据不可以修改。
const string s1; //const位置都可以,注意正确使用方法
string const s2;//const位置都可以
return 0;
}
来源:CSDN
作者:txwtech
链接:https://blog.csdn.net/txwtech/article/details/104092222