| 導購 | 订阅 | 在线投稿
分享
 
 
 

就c++中的const限定修飾符做一個入門的教程

來源:互聯網  2008-06-01 02:01:01  評論

const修飾符可以把對象轉變成常數對象,什麽意思呢?

意思就就是說利用const進行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數一樣使用!

使用方法是:

const int a=1;//這裏定義了一個int類型的const常數變量a;

但就于指針來說const仍然是起作用的,以下有兩點要十分注重,因爲下面的兩個問題很輕易混淆!

我們來看一個如下的例子: //程序作者:管甯

//站點:www.cndev-lab.com

//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>

using namespace std;

void main(void)

{

const int a=10;

int b=20;

const int *pi;

pi=&a;

cout <<*pi << "" << a <<endl;

pi=&b;

cout <<*pi << "" <<b <<endl;

cin.get();

}

上面的代碼中最重要的一句是 const int *pi

這句從右向座讀作:pi是一個指向int類型的,被定義成const的對象的指針;

這樣的一種聲明方式的作用是可以修改pi這個指針所指向的內存地址卻不能修改指向對象的值。

假如你在代碼後加上*pi=10;這樣的賦值操作是不被答應編譯的!

好,看了上面的兩個例子你對const有了一個基本的熟悉了,那麽我們接下來看一個很輕易混淆的用法!

請看如下的代碼 //程序作者:管甯

//站點:www.cndev-lab.com

//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>

using namespace std;

void main(void)

{

int a=10;

const int *const pi=&a;

cout <<*pi << "" <<a <<endl;

cin.get();

}

上面的代碼中最重要的一句是 const int *const pi

這句從右向座讀作:pi是一個指向int類型對象的const指針;

這樣的一種聲明方式的作用是你既不可以修改pi所指向對象的內存地址也不能利用指針的解引用方式修改對象的值,也就是用*pi=10這樣的方式;

所以你假如在最後加上*pi=20,想試圖通過這樣的方式修改對象a的值是不被答應編譯的!

所以結合上面的兩點所說,把代碼修改成如下形式後就可以必然在程序的任意的地方修改對象a的值或者是指針pi的地址了,下面的這種寫法常被用語涵數的形式參數,這樣可以保證對象不會在涵數內被改變值! //程序作者:管甯

//站點:www.cndev-lab.com

//所有稿件均有版權,如要轉載,請務必聞名出處和作者

#include <iostream>

using namespace std;

void main(void)

{

const int a=10;//這句和上面不同,請注重!

const int *const pi=&a;

cout <<*pi << "" <<a <<endl;

cin.get();

}

就c++中的const限定修飾符做一個入門的教程
更多內容請看C/C++技術學堂專題,或

const修飾符可以把對象轉變成常數對象,什麽意思呢? 意思就就是說利用const進行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數一樣使用! 使用方法是: const int a=1;//這裏定義了一個int類型的const常數變量a; 但就于指針來說const仍然是起作用的,以下有兩點要十分注重,因爲下面的兩個問題很輕易混淆! 我們來看一個如下的例子: //程序作者:管甯 //站點:www.cndev-lab.com //所有稿件均有版權,如要轉載,請務必聞名出處和作者 #include <iostream> using namespace std; void main(void) { const int a=10; int b=20; const int *pi; pi=&a; cout <<*pi << "" << a <<endl; pi=&b; cout <<*pi << "" <<b <<endl; cin.get(); } 上面的代碼中最重要的一句是 const int *pi 這句從右向座讀作:pi是一個指向int類型的,被定義成const的對象的指針; 這樣的一種聲明方式的作用是可以修改pi這個指針所指向的內存地址卻不能修改指向對象的值。 假如你在代碼後加上*pi=10;這樣的賦值操作是不被答應編譯的! 好,看了上面的兩個例子你對const有了一個基本的熟悉了,那麽我們接下來看一個很輕易混淆的用法! 請看如下的代碼 //程序作者:管甯 //站點:www.cndev-lab.com //所有稿件均有版權,如要轉載,請務必聞名出處和作者 #include <iostream> using namespace std; void main(void) { int a=10; const int *const pi=&a; cout <<*pi << "" <<a <<endl; cin.get(); } 上面的代碼中最重要的一句是 const int *const pi 這句從右向座讀作:pi是一個指向int類型對象的const指針; 這樣的一種聲明方式的作用是你既不可以修改pi所指向對象的內存地址也不能利用指針的解引用方式修改對象的值,也就是用*pi=10這樣的方式; 所以你假如在最後加上*pi=20,想試圖通過這樣的方式修改對象a的值是不被答應編譯的! 所以結合上面的兩點所說,把代碼修改成如下形式後就可以必然在程序的任意的地方修改對象a的值或者是指針pi的地址了,下面的這種寫法常被用語涵數的形式參數,這樣可以保證對象不會在涵數內被改變值! //程序作者:管甯 //站點:www.cndev-lab.com //所有稿件均有版權,如要轉載,請務必聞名出處和作者 #include <iostream> using namespace std; void main(void) { const int a=10;//這句和上面不同,請注重! const int *const pi=&a; cout <<*pi << "" <<a <<endl; cin.get(); } [url=/bbs/detail_1785176.html][img]http://image.wangchao.net.cn/it/1323424421377.gif[/img][/url] 更多內容請看C/C++技術學堂專題,或
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有