编辑代码

char *p = "hello";     // 非const指针,
                       // 非const数据

const char *p = "hello";  // 非const指针,
                          // const数据

char * const p = "hello";   // const指针,
                            // 非const数据

const char * const p = "hello";  // const指针,
                                 // const数据

int a = 5;
const int *p =&a;
*p = 20;   //error  不可以通过修改所指向的变量的值

int b =20;
p = &b; //right  指针可以指向别的变量
int main()
{
	int a = 10, b = 20;

	int* p1 = &a;    //可以修改值 也可以修改方向
	*p1 = 100;
	p1 = &b;

	const int* p2 = &a;   //指向
	//int x2=*p2;
	//*P2=100;//error
	//p2=&b;
	int const* p3 = &a;
	//const 在指针前 修饰指向方向可以读取值 自身值可以改变
	int* const p4 = &a;
	//int x=*p4;
	// *p4=100;
	//p4=&b;//error
	//const 在指针后 修饰值本身 p4的值不可以改变 但是后面修饰的值可以
	const int* const p5 = &a;//指针前有指针后也有 均不可以改变
	return 0;