C++中的指针与const

时间:2022-11-25 14:54:03

刚开始接触C++时,指针和const之间的关系有点混乱,现在总结如下:

一、指向const变量的指针

#include<iostream.h>
void main()
{
const int *p=NULL;
const int a=;
p=&a;
cout<<"*p="<<*p<<endl;
int b=;
p=&b;
cout<<"*p="<<*p<<endl;
//*p=200; 错误,不能通过修改指针来修改指针指向的内容
b=;
cout<<"*p="<<*p<<endl;
}

不能通过修改指针来修改指针指向的内容,但可以修改指针的指向。

另一种形式:

int const *p=NULL;

二、const指针

#include<iostream.h>
void main()
{
int a=;
int b=;
int * const p=&a;
cout<<"*p="<<*p<<endl;
//p=&b; 错误,不能通过修改const指针的指向来修改指针指向的内容
*p=;
cout<<"*p="<<*p<<endl;
}

不能修改指针的指向,但可以通过修改指针来修改指针指向的内容。

不过这样也会报错:

#include<iostream.h>
void main()
{
const int a=;
int b=;
int * const p=&a;
cout<<"*p="<<*p<<endl;
//p=&b; 错误,不能通过修改const指针的指向来修改指针指向的内容
*p=;
cout<<"*p="<<*p<<endl;
}

报错如下:

--------------------Configuration: 01 - Win32 Debug--------------------
Compiling...

01.cpp

E:\Program Files (x86)\20141102\01.cpp(6) : error C2440: 'initializing' : cannot convert from 'const int *' to 'int *const '

Conversion loses qualifiers

Error executing cl.exe.

01.exe - 1 error(s), 0 warning(s)

而指向const变量的指针中不会有这样的问题。

三、指向const变量的const指针

#include<iostream.h>
void main()
{
int a=;
int b=;
const int * const p=&a;
cout<<"*p="<<*p<<endl;
//p=&b; 错误,不能通过修改const指针的指向来修改指针指向的内容
//*p=200; 错误,不能通过修改指针来修改指针指向的内容
}

不能通过修改指针来修改指针指向的内容,也不可以修改指针的指向。

估计以后我都没有耐心看,也许那时这都不是事。