1.指针常量
指针常量,有几点需要注意。
(1)顾名思义,其实是一个指针,
(2)并且这个指针是一个常量,不能修改了,
(3)但是它指向的地址内的数据是可以修改的,
(4)生声明的时候必须初始化。
例如
char ch1[5] = "liji";
char* const pStr1 = ch1;//【1】声明的时候,必须赋初值;【2】指针常量,指向的地址值不可修改,但可以修改指向的地址内的数据
cout << pStr1 << endl;
//例如
//pStr1 = "HelloWorld";//ERROR 指向的地址是不可变的
*pStr1 = 'h';//OK 可以修改指向的地址内的数据
cout << pStr1 << endl;
*(pStr1 + 1) = 'e'; cout << pStr1 << endl;
*(pStr1 + 2) = 'l'; cout << pStr1 << endl;
*(pStr1 + 3) = 'l'; cout << pStr1 << endl;
2.指向常量的指针
指向常量的指针有几点需要注意:
(1)是一个指针
(2)指向的地址是可以变化的
(3)指向的地址内的数据是不可以修改的
例如
char ch[5] = "liji";
const char* pStr = ch;// 指针指向的是常量,指针指向的地址是可变的,但是地址内的数据是不可变的
cout << pStr << endl;
//*pStr = 'w';//error 指针指向的地址内的数据是不可变的
pStr = "nihao zaijian ";//ok 指针指向的地址是可以变化的
cout << pStr << endl;
3.示例代码
#include <iostream>
using namespace std;
int main()
{
char ch[5] = "liji";
const char* pStr = ch;// 指针指向的是常量,指针指向的地址是可变的,但是地址内的数据是不可变的
cout << pStr << endl;
//*pStr = 'w';//error 指针指向的地址内的数据是不可变的
pStr = "nihao zaijian ";//ok 指针指向的地址是可以变化的
cout << pStr << endl;
char ch1[5] = "liji";
char* const pStr1 = ch1;//【1】声明的时候,必须赋初值;【2】指针常量,指向的地址值不可修改
cout << pStr1 << endl;
//例如
//pStr1 = "HelloWorld";//ERROR 指向的地址是不可变的
*pStr1 = 'h';//OK 可以修改指向的地址内的数据
cout << pStr1 << endl;
*(pStr1 + 1) = 'e'; cout << pStr1 << endl;
*(pStr1 + 2) = 'l'; cout << pStr1 << endl;
*(pStr1 + 3) = 'l'; cout << pStr1 << endl;
system("pause");
return 0;
}