const修飾符可以把對(duì)象轉(zhuǎn)變成常數(shù)對(duì)象,什么意思呢?
意思就就是說利用const進(jìn)行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數(shù)一樣使用!
使用方法是:
const int a=1;//這里定義了一個(gè)int類型的const常數(shù)變量a;
但就于指針來說const仍然是起作用的,以下有兩點(diǎn)要十分注意,因?yàn)橄旅娴膬蓚€(gè)問題很容易混淆!
我們來看一個(gè)如下的例子:
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
const int a=10;
int b=20;
const int *pi;
pi=&a;
cout <<*pi << "|" << a < pi=&b;
cout <<*pi << "|" < cin.get();
}
上面的代碼中最重要的一句是 const int *pi
這句從右向座讀作:pi是一個(gè)指向int類型的,被定義成const的對(duì)象的指針;
這樣的一種聲明方式的作用是可以修改pi這個(gè)指針?biāo)赶虻膬?nèi)存地址卻不能修改指向?qū)ο蟮闹怠?BR> 如果你在代碼后加上*pi=10;這樣的賦值操作是不被允許編譯的!
好,看了上面的兩個(gè)例子你對(duì)const有了一個(gè)基本的認(rèn)識(shí)了,那么我們接下來看一個(gè)很容易混淆的用法!
請(qǐng)看如下的代碼
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
int a=10;
const int *const pi=&a;
cout <<*pi << "|" }
上面的代碼中最重要的一句是 const int *const pi
這句從右向座讀作:pi是一個(gè)指向int類型對(duì)象的const指針;
這樣的一種聲明方式的作用是你既不可以修改pi所指向?qū)ο蟮膬?nèi)存地址也不能利用指針的解引用方式修改對(duì)象的值,也就是用*pi=10這樣的方式;
所以你如果在最后加上*pi=20,想試圖通過這樣的方式修改對(duì)象a的值是不被允許編譯的!
所以結(jié)合上面的兩點(diǎn)所說,把代碼修改成如下形式后就可以必然在程序的任意的地方修改對(duì)象a的值或者是指針pi的地址了,下面的這種寫法常被用語涵數(shù)的形式參數(shù),這樣可以保證對(duì)象不會(huì)在涵數(shù)內(nèi)被改變值!
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
const int a=10;//這句和上面不同,請(qǐng)注意!
const int *const pi=&a;
cout <<*pi << "|" }
意思就就是說利用const進(jìn)行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數(shù)一樣使用!
使用方法是:
const int a=1;//這里定義了一個(gè)int類型的const常數(shù)變量a;
但就于指針來說const仍然是起作用的,以下有兩點(diǎn)要十分注意,因?yàn)橄旅娴膬蓚€(gè)問題很容易混淆!
我們來看一個(gè)如下的例子:
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
const int a=10;
int b=20;
const int *pi;
pi=&a;
cout <<*pi << "|" << a <
cout <<*pi << "|" < cin.get();
}
上面的代碼中最重要的一句是 const int *pi
這句從右向座讀作:pi是一個(gè)指向int類型的,被定義成const的對(duì)象的指針;
這樣的一種聲明方式的作用是可以修改pi這個(gè)指針?biāo)赶虻膬?nèi)存地址卻不能修改指向?qū)ο蟮闹怠?BR> 如果你在代碼后加上*pi=10;這樣的賦值操作是不被允許編譯的!
好,看了上面的兩個(gè)例子你對(duì)const有了一個(gè)基本的認(rèn)識(shí)了,那么我們接下來看一個(gè)很容易混淆的用法!
請(qǐng)看如下的代碼
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
int a=10;
const int *const pi=&a;
cout <<*pi << "|"
上面的代碼中最重要的一句是 const int *const pi
這句從右向座讀作:pi是一個(gè)指向int類型對(duì)象的const指針;
這樣的一種聲明方式的作用是你既不可以修改pi所指向?qū)ο蟮膬?nèi)存地址也不能利用指針的解引用方式修改對(duì)象的值,也就是用*pi=10這樣的方式;
所以你如果在最后加上*pi=20,想試圖通過這樣的方式修改對(duì)象a的值是不被允許編譯的!
所以結(jié)合上面的兩點(diǎn)所說,把代碼修改成如下形式后就可以必然在程序的任意的地方修改對(duì)象a的值或者是指針pi的地址了,下面的這種寫法常被用語涵數(shù)的形式參數(shù),這樣可以保證對(duì)象不會(huì)在涵數(shù)內(nèi)被改變值!
//程序作者:管寧
//站點(diǎn):www.cndev-lab.com
//所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者
#include
using namespace std;
void main(void)
{
const int a=10;//這句和上面不同,請(qǐng)注意!
const int *const pi=&a;
cout <<*pi << "|"

