一、指针
指针(Pointer)是编程语言中的一个对象。利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元;
举例说明:
int a = 10;
int * p = &a;
cout << "a = " << a << endl;
cout << "指针p指向的地址存入了"<<*p<<endl;
cout << "指针p指向的地址为" << p << endl;
创建指针变量p指向int型变量a的地址,即指针变量p内存入的是a对应的内存地址,可以根据p内存入的内存地址访问a;
运行结果如下:
二、常量指针
指针前加了const修饰,表示为常量指针,指针的指向可以修改,但是指向的值不可以通过该指针修改;例如:
int a = 10;
int b = 10;
const int * p = &a; //常量指针;指针指向可以修改,但指向的值不可以改;
p = &b; //合法,指针重新指向b;
*p = 20; //非法,通过指针p无法直接修改变量a对应内存中的值;
三、指针常量
在变量前加了const修饰,表示为指针常量,指向不可以修改,但是指针指向值可以修改;
int a = 10;
int b = 10;
int * const p = &a; //常量指针;指针指向可以修改,但指向的值不可以改;
p = &b; //非法,指针不可重新指向b;
*p = 20; //合法,通过指针p直接修改变量a对应内存中的值;
四、总结
const意为常量,当const放在指针,即int * 前时,表明为指针常量,即指针变量的值无法修改,但是指向可以修改;当放在指针变量p前时,表明p指向的地址为常量,也就是指向不可以修改,但是可以修改该地址的值;
或许可以这么记,const放在*p前,而*表示取内容,表明指向的内容无法修改;而p前表明指针无法修改,也就是指针指向的位置无法修改;