青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品


1、什么是const?
?? 常類型是指使用類型修飾符const說明的類型,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓碌摹#ó?dāng)然,我們可以偷梁換柱進(jìn)行更新:)

2、為什么引入const?
  const 推出的初始目的,正是為了取代預(yù)編譯指令,消除它的缺點,同時繼承它的優(yōu)點。

3、cons有什么主要的作用?
?? (1)可以定義const常量,具有不可變性。
??????? 例如:
???????????? const int Max=100;
???????????? int Array[Max];???????
?? (2)便于進(jìn)行類型檢查,使編譯器對處理內(nèi)容有更多了解,消除了一些隱患。
?例如:
???????????? void f(const int i) { .........}
??????? 編譯器就會知道i是一個常量,不允許修改;
?? (3)可以避免意義模糊的數(shù)字出現(xiàn),同樣可以很方便地進(jìn)行參數(shù)的調(diào)整和修改。
??????? 同宏定義一樣,可以做到不變則已,一變都變!如(1)中,如果想修改Max的內(nèi)容,只需要:const int Max=you want;即可!
?? (4)可以保護被修飾的東西,防止意外的修改,增強程序的健壯性。
??????? 還是上面的例子,如果在函數(shù)體內(nèi)修改了i,編譯器就會報錯;
??????? 例如:
???????????? void f(const int i) { i=10;//error! }
??? (5) 為函數(shù)重載提供了一個參考。
???????? class A
???????? {
?????????? ......
?????????? void f(int i)?????? {......} file://一個函數(shù)
?????????? void f(int i) const {......} file://上一個函數(shù)的重載
??????????? ......
????????? };
???? (6) 可以節(jié)省空間,避免不必要的內(nèi)存分配。
???????? 例如:
????????????? #define PI 3.14159???????? file://常量宏
????????????? const doulbe? Pi=3.14159;? file://此時并未將Pi放入ROM中
????????????? ......
????????????? double i=Pi;?????????????? file://此時為Pi分配內(nèi)存,以后不再分配!
????????????? double I=PI;?????????????? file://編譯期間進(jìn)行宏替換,分配內(nèi)存
????????????? double j=Pi;?????????????? file://沒有內(nèi)存分配
????????????? double J=PI;?????????????? file://再進(jìn)行宏替換,又一次分配內(nèi)存!
???????? const定義常量從匯編的角度來看,只是給出了對應(yīng)的內(nèi)存地址,而不是象#define一樣給出的是立即數(shù),所以,const定義的常量在程序運行過程中只有一份拷貝,而#define定義的常量在內(nèi)存中有若干個拷貝。
???? (7) 提高了效率。
?????????? 編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內(nèi)存的操作,使得它的效率也很高。

3、如何使用const?
?? (1)修飾一般常量
  ?? 一般常量是指簡單類型的常量。這種常量在定義時,修飾符const可以用在類型說明符前,也可以用在類型說明符后。
?????? 例如:??
?????????? int const x=2;  或  const int x=2;
?? (2)修飾常數(shù)組
  ???? 定義或說明一個常數(shù)組可采用如下格式:
  ???? int const a[5]={1, 2, 3, 4, 5}; 
???????? const int a[5]={1, 2, 3, 4, 5};
?? (3)修飾常對象
????  常對象是指對象常量,定義格式如下:
? class A;
  ???? const A a;
???????? A const a;
  ??? 定義常對象時,同樣要進(jìn)行初始化,并且該對象不能再被更新,修飾符const可以放在類名后面,也可以放在類名前面。 
?? (4)修飾常指針
??????? const int *A;??????? file://const修飾指向的對象,A可變,A指向的對象不可變
??????? int const *A;  ???? file://const修飾指向的對象,A可變,A指向的對象不可變
??????? int *const A;  ???? file://const修飾指針A,???? A不可變,A指向的對象可變
??????? const int *const A;? file://指針A和A指向的對象都不可變
?? (5)修飾常引用
??????  使用const修飾符也可以說明引用,被說明的引用為常引用,該引用所引用的對象不能被更新。其定義格式如下:
  ???? const double & v;
  (6)修飾函數(shù)的常參數(shù)
??????? const修飾符也可以修飾函數(shù)的傳遞參數(shù),格式如下:
??????? void Fun(const int Var);
??????? 告訴編譯器Var在函數(shù)體中的無法改變,從而防止了使用者的一些無意的或錯誤的修改。????
?? (7)修飾函數(shù)的返回值:
??????? const修飾符也可以修飾函數(shù)的返回值,是返回值不可被改變,格式如下:
??????????? const int Fun1();
??????????? const MyClass Fun2();
?? (8)修飾類的成員函數(shù):
??????? const修飾符也可以修飾類的成員函數(shù),格式如下:
??????????? class ClassName
???? {
???????????? public:
???????????  ???  int Fun() const;
???????????  ?????? .....
???????????? };
??????? 這樣,在調(diào)用函數(shù)Fun時就不能修改類里面的數(shù)據(jù)
??? (9)在另一連接文件中引用const常量
???????? extern const int i;???? file://正確的引用
???????? extern const int j=10;? file://錯誤!常量不可以被再次賦值
??? 另外,還要注意,常量必須初始化!
???????? 例如:
???????????? const int i=5;?

4、幾點值得討論的地方:
?? (1)const究竟意味著什么?
??????? 說了這么多,你認(rèn)為const意味著什么?一種修飾符?接口抽象?一種新類型?
??????? 也許都是,在Stroustup最初引入這個關(guān)鍵字時,只是為對象放入ROM做出了一種可能,對于const對象,C++既允許對其進(jìn)行靜態(tài)初始化,也允許對他進(jìn)行動態(tài)初始化。理想的const對象應(yīng)該在其構(gòu)造函數(shù)完成之前都是可寫的,在析夠函數(shù)執(zhí)行開始后也都是可寫的,換句話說,const對象具有從構(gòu)造函數(shù)完成到析夠函數(shù)執(zhí)行之前的不變性,如果違反了這條規(guī)則,結(jié)果都是未定義的!雖然我們把const放入ROM中,但這并不能夠保證const的任何形式的墮落,我們后面會給出具體的辦法。無論const對象被放入ROM中,還是通過存儲保護機制加以保護,都只能保證,對于用戶而言這個對象沒有改變。換句話說,廢料收集器(我們以后會詳細(xì)討論,這就一筆帶過)或數(shù)據(jù)庫系統(tǒng)對一個const的修改怎沒有任何問題。
?? (2)位元const V.S. 抽象const?
??????? 對于關(guān)鍵字const的解釋有好幾種方式,最常見的就是位元const 和 抽象const。下面我們看一個例子:
??????? class A
??????? {
???????? public:
?????????????? ......
?????????????? A f(const A& a);
?????????????? ......
???????? };
???????? 如果采用抽象const進(jìn)行解釋,那就是f函數(shù)不會去改變所引用對象的抽象值,如果采用位元const進(jìn)行解釋,那就成了f函數(shù)不會去改變所引用對象的任何位元。
???????? 我們可以看到位元解釋正是c++對const問題的定義,const成員函數(shù)不被允許修改它所在對象的任何一個數(shù)據(jù)成員。
???????? 為什么這樣呢?因為使用位元const有2個好處:
???????? 最大的好處是可以很容易地檢測到違反位元const規(guī)定的事件:編譯器只用去尋找有沒有對數(shù)據(jù)成員的賦值就可以了。另外,如果我們采用了位元const,那么,對于一些比較簡單的const對象,我們就可以把它安全的放入ROM中,對于一些程序而言,這無疑是一個很重要的優(yōu)化方式。(關(guān)于優(yōu)化處理,我們到時候?qū)iT進(jìn)行討論)
???????? 當(dāng)然,位元const也有缺點,要不然,抽象const也就沒有產(chǎn)生的必要了。
???????? 首先,位元const的抽象性比抽象const的級別更低!實際上,大家都知道,一個庫接口的抽象性級別越低,使用這個庫就越困難。
???????? 其次,使用位元const的庫接口會暴露庫的一些實現(xiàn)細(xì)節(jié),而這往往會帶來一些負(fù)面效應(yīng)。所以,在庫接口和程序?qū)崿F(xiàn)細(xì)節(jié)上,我們都應(yīng)該采用抽象const。
???????? 有時,我們可能希望對const做出一些其它的解釋,那么,就要注意了,目前,大多數(shù)對const的解釋都是類型不安全的,這里我們就不舉例子了,你可以自己考慮一下,總之,我們盡量避免對const的重新解釋。
?? (3)放在類內(nèi)部的常量有什么限制?
??????? 看看下面這個例子:
??????? class A
??????? {
???????? private:
?????????? const int c3 = 7;?????????? // ???
?? ??? static int c4 = 7;????????? // ???
?? ??? static const float c5 = 7;? // ???
????????? ......
? };
???????? 你認(rèn)為上面的3句對嗎?呵呵,都不對!使用這種類內(nèi)部的初始化語法的時候,常量必須是被一個常量表達(dá)式初始化的整型或枚舉類型,而且必須是static和const形式。這顯然是一個很嚴(yán)重的限制!
???????? 那么,我們的標(biāo)準(zhǔn)委員會為什么做這樣的規(guī)定呢?一般來說,類在一個頭文件中被聲明,而頭文件被包含到許多互相調(diào)用的單元去。但是,為了避免復(fù)雜的編譯器規(guī)則,C++要求每一個對象只有一個單獨的定義。如果C++允許在類內(nèi)部定義一個和對象一樣占據(jù)內(nèi)存的實體的話,這種規(guī)則就被破壞了。
??? (4)如何初始化類內(nèi)部的常量?
???????? 一種方法就是static 和 const 并用,在內(nèi)部初始化,如上面的例子;
???????? 另一個很常見的方法就是初始化列表:
???????? class A
???????? {
????????? public:
??????????????? A(int i=0):test(i) {}
????????? private:
??????????????? const int i;
????????? };
????????? 還有一種方式就是在外部初始化,例如:
???????? class A
???????? {
????????? public:
??????????????? A() {}
????????? private:
??????????????? static const int i;? file://注意必須是靜態(tài)的!
????????? };
????????? const int A::i=3;
???? (5)常量與數(shù)組的組合有什么特殊嗎?
????????? 我們給出下面的代碼:
?????????? const int size[3]={10,20,50};
?????????? int array[size[2]];
?????????? 有什么問題嗎?對了,編譯通不過!為什么呢?
?????????? const可以用于集合,但編譯器不能把一個集合存放在它的符號表里,所以必須分配內(nèi)存。在這種情況下,const意味著“不能改變的一塊存儲”。然而,其值在編譯時不能被使用,因為編譯器在編譯時不需要知道存儲的內(nèi)容。自然,作為數(shù)組的大小就不行了:)
???????? 你再看看下面的例子:
????????? class A
???????? {
????????? public:
??????????????? A(int i=0):test[2]({1,2}) {} file://你認(rèn)為行嗎?
????????? private:
??????????????? const int test[2];
????????? };
???????? vc6下編譯通不過,為什么呢?
???????? 關(guān)于這個問題,前些時間,njboy問我是怎么回事?我反問他:“你認(rèn)為呢?”他想了想,給出了一下解釋,大家可以看看:我們知道編譯器堆初始化列表的操作是在構(gòu)造函數(shù)之內(nèi),顯式調(diào)用可用代碼之前,初始化的次序依據(jù)數(shù)據(jù)聲明的次序。初始化時機應(yīng)該沒有什么問題,那么就只有是編譯器對數(shù)組做了什么手腳!其實做什么手腳,我也不知道,我只好對他進(jìn)行猜測:編譯器搜索到test發(fā)現(xiàn)是一個非靜態(tài)的數(shù)組,于是,為他分配內(nèi)存空間,這里需要注意了,它應(yīng)該是一下分配完,并非先分配test[0],然后利用初始化列表初始化,再分配test[1],這就導(dǎo)致數(shù)組的初始化實際上是賦值!然而,常量不允許賦值,所以無法通過。
??????? 呵呵,看了這一段冠冕堂皇的話,真讓我笑死了!njboy別怪我揭你短呀:)我對此的解釋是這樣的:C++標(biāo)準(zhǔn)有一個規(guī)定,不允許無序?qū)ο笤陬悆?nèi)部初始化,數(shù)組顯然是一個無序的,所以這樣的初始化是錯誤的!對于他,只能在類的外部進(jìn)行初始化,如果想讓它通過,只需要聲明為靜態(tài)的,然后初始化。
???????? 這里我們看到,常量與數(shù)組的組合沒有什么特殊!一切都是數(shù)組惹的禍!
?? (6)this指針是不是const類型的?
??????? this指針是一個很重要的概念,那該如何理解她呢?也許這個話題太大了,那我們縮小一些:this指針是個什么類型的?這要看具體情況:如果在非const成員函數(shù)中,this指針只是一個類類型的;如果在const成員函數(shù)中,this指針是一個const類類型的;如果在volatile成員函數(shù)中,this指針就是一個volatile類類型的。
?? (7)const到底是不是一個重載的參考對象?
??????? 先看一下下面的例子:
??????? class A
???????? {
?????????? ......
?????????? void f(int i)?????? {......} file://一個函數(shù)
?????????? void f(int i) const {......} file://上一個函數(shù)的重載
??????????? ......
????????? };
??????? 上面是重載是沒有問題的了,那么下面的呢?
???????? class A
???????? {
?????????? ......
?????????? void f(int i)?????? {......} file://一個函數(shù)
?????????? void f(const int i) {......} file://?????
??????????? ......
???????? };
???????? 這個是錯誤的,編譯通不過。那么是不是說明內(nèi)部參數(shù)的const不予重載呢?再看下面的例子:
??????? class A
???????? {
?????????? ......
?????????? void f(int& )?????? {......} file://一個函數(shù)
?????????? void f(const int& ) {......} file://?????
??????????? ......
???????? };
???????? 這個程序是正確的,看來上面的結(jié)論是錯誤的。為什么會這樣呢?這要涉及到接口的透明度問題。按值傳遞時,對用戶而言,這是透明的,用戶不知道函數(shù)對形參做了什么手腳,在這種情況下進(jìn)行重載是沒有意義的,所以規(guī)定不能重載!當(dāng)指針或引用被引入時,用戶就會對函數(shù)的操作有了一定的了解,不再是透明的了,這時重載是有意義的,所以規(guī)定可以重載。
?? (8)什么情況下為const分配內(nèi)存?
??????? 以下是我想到的可能情況,當(dāng)然,有的編譯器進(jìn)行了優(yōu)化,可能不分配內(nèi)存。
??????? A、作為非靜態(tài)的類成員時;
??????? B、用于集合時;
??????? C、被取地址時;
??????? D、在main函數(shù)體內(nèi)部通過函數(shù)來獲得值時;
??????? E、const的 class或struct有用戶定義的構(gòu)造函數(shù)、析構(gòu)函數(shù)或基類時;。
??????? F、當(dāng)const的長度比計算機字長還長時;
??????? G、參數(shù)中的const;
??????? H、使用了extern時。
??????? 不知道還有沒有其他情況,歡迎高手指點:)???????
?? (9)臨時變量到底是不是常量?
??????? 很多情況下,編譯器必須建立臨時對象。像其他任何對象一樣,它們需要存儲空間而且必須被構(gòu)造和刪除。區(qū)別是我們從來看不到編譯器負(fù)責(zé)決定它們的去留以及它們存在的細(xì)節(jié)。對于C++標(biāo)準(zhǔn)草案而言:臨時對象自動地成為常量。因為我們通常接觸不到臨時對象,不能使用與之相關(guān)的信息,所以告訴臨時對象做一些改變有可能會出錯。當(dāng)然,這與編譯器有關(guān),例如:vc6、vc7都對此作了擴展,所以,用臨時對象做左值,編譯器并沒有報錯。
?? (10)與static搭配會不會有問題?
??????? 假設(shè)有一個類:
??????? class A
??????? {
???????? public:
???????????? ......
???????????? static void f() const { ......}
???????????? ......
???????? };
???????? 我們發(fā)現(xiàn)編譯器會報錯,因為在這種情況下static不能夠與const共存!
???????? 為什么呢?因為static沒有this指針,但是const修飾this指針,所以...
???? (11)如何修改常量?
????????? 有時候我們卻不得不對類內(nèi)的數(shù)據(jù)進(jìn)行修改,但是我們的接口卻被聲明了const,那該怎么處理呢?我對這個問題的看法如下:
?????????? 1)標(biāo)準(zhǔn)用法:mutable
????????????? class A
????????????? {
?????????????? public:
????????????????????? A(int i=0):test(i)??????? { }
????????????????????? void SetValue(int i)const { test=i; }
?????????????? private:
????????????????????? mutable int test;?? file://這里處理!
?????????????? };
?????????? 2)強制轉(zhuǎn)換:const_cast
?????????????? class A
?????????????? {
?????????????? public:
????????????????????? A(int i=0):test(i)??????? { }
????????????????????? void SetValue(int i)const
????????????????????? { const_cast <int>(test)=i; }//這里處理!
?????????????? private:
????????????????????? int test;??
?????????????? };
??????????? 3)靈活的指針:int*
?????????????? class A
????????????? {
?????????????? public:
????????????????????? A(int i=0):test(i)??????? { }
????????????????????? void SetValue(int i)const
????????????????????? { *test=i; }
?????????????? private:
????????????????????? int* test;?? file://這里處理!
?????????????? };
??????????? 4)未定義的處理
????????????? class A
????????????? {
?????????????? public:
????????????????????? A(int i=0):test(i)??????? { }
????????????????????? void SetValue(int i)const
????????????????????? { int *p=(int*)&test; *p=i; }//這里處理!
?????????????? private:
????????????????????? int test;??
?????????????? };
??????????????? 注意,這里雖然說可以這樣修改,但結(jié)果是未定義的,避免使用!
???????????? 5)內(nèi)部處理:this指針
????????????? class A
????????????? {
?????????????? public:
????????????????????? A(int i=0):test(i)??????? { }
????????????????????? void SetValue(int i)const
????????????????????? { ((A*)this)->test=i; }//這里處理!
?????????????? private:
????????????????????? int test;??
?????????????? };
???????????? 6)最另類的處理:空間布局
?????????????? class A
?????????????? {
??????????????? public:
????????????????????? A(int i=0):test(i),c('a') {? }
??????????????? private:
????????????????????? char c;
????????????????????? const int test;
??????????????? };
??????????????? int main()
??????????????? {
??????????????????? A a(3);
??????????????????? A* pa=&a;
??????????????????? char* p=(char*)pa;????
??????????????????? int*? pi=(int*)(p+4);//利用邊緣調(diào)整
??????????????????? *pi=5;???????????????? file://此處改變了test的值!
??????????????????? return 0;
???????????????? }
??????? 雖然我給出了6中方法,但是我只是想說明如何更改,但出了第一種用法之外,另外5種用法,我們并不提倡,不要因為我這么寫了,你就這么用,否則,我真是要誤人子弟了:)
???? (12)最后我們來討論一下常量對象的動態(tài)創(chuàng)建。
?????????? 既然編譯器可以動態(tài)初始化常量,就自然可以動態(tài)創(chuàng)建,例如:
?????????? const int* pi=new const int(10);
?????????? 這里要注意2點:
?????????? 1)const對象必須被初始化!所以(10)是不能夠少的。
?????????? 2)new返回的指針必須是const類型的。
?????????? 那么我們可不可以動態(tài)創(chuàng)建一個數(shù)組呢?
?????????? 答案是否定的,因為new內(nèi)置類型的數(shù)組,不能被初始化。
?????????? 這里我們忽視了數(shù)組是類類型的,同樣對于類內(nèi)部數(shù)組初始化我們也做出了這樣的忽視,因為這涉及到數(shù)組的問題,我們以后再討論。

(const?討論第二篇)?

水滴石穿C語言之正確使用const??

楚云風(fēng)
2004-9-16 14:46:00 文/
  基本解釋

  const是一個C語言的關(guān)鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的健壯性,另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一些幫助。  雖然這聽起來很簡單,但實際上,const的使用也是c語言中一個比較微妙的地方,微妙在何處呢?請看下面幾個問題。

  問題:const變量 & 常量

  為什么我象下面的例子一樣用一個const變量來初始化數(shù)組,ANSI C的編譯器會報告一個錯誤呢?

const int n = 5;
int a[n];


  答案與分析:

  1)、這個問題討論的是“常量”與“只讀變量”的區(qū)別。常量肯定是只讀的,例如5, “abc”,等,肯定是只讀的,因為程序中根本沒有地方存放它的值,當(dāng)然也就不能夠去修改它。而“只讀變量”則是在內(nèi)存中開辟一個地方來存放它的值,只不過這個值由編譯器限定不允許被修改。C語言關(guān)鍵字const就是用來限定一個變量不允許被改變的修飾符(Qualifier)。上述代碼中變量n被修飾為只讀變量,可惜再怎么修飾也不是常量。而ANSI C規(guī)定數(shù)組定義時維度必須是“常量”,“只讀變量”也是不可以的。

  2)、注意:在ANSI C中,這種寫法是錯誤的,因為數(shù)組的大小應(yīng)該是個常量,而const int n,n只是一個變量(常量 != 不可變的變量,但在標(biāo)準(zhǔn)C++中,這樣定義的是一個常量,這種寫法是對的),實際上,根據(jù)編譯過程及內(nèi)存分配來看,這種用法本來就應(yīng)該是合理的,只是ANSI C對數(shù)組的規(guī)定限制了它。

  3)、那么,在ANSI C 語言中用什么來定義常量呢?答案是enum類型和#define宏,這兩個都可以用來定義常量。

?? 問題:const變量 & const 限定的內(nèi)容

  下面的代碼編譯器會報一個錯誤,請問,哪一個語句是錯誤的呢?

typedef char * pStr;
char string[4] = "abc";
const char *p1 = string;
const pStr p2 = string;
p1++;
p2++;

  答案與分析:

  問題出在p2++上。

  1)、const使用的基本形式: const char m;

  限定m不可變。

  2)、替換1式中的m, const char *pm;

  限定*pm不可變,當(dāng)然pm是可變的,因此問題中p1++是對的。

  3)、替換1式char, const newType m;

  限定m不可變,問題中的charptr就是一種新類型,因此問題中p2不可變,p2++是錯誤的。

  問題:const變量 & 字符串常量

  請問下面的代碼有什么問題?

char *p = "i'm hungry!";
p[0]= 'I';

  答案與分析

  上面的代碼可能會造成內(nèi)存的非法寫操作。分析如下, “i'm hungry”實質(zhì)上是字符串常量,而常量往往被編譯器放在只讀的內(nèi)存區(qū),不可寫。p初始指向這個只讀的內(nèi)存區(qū),而p[0] = 'I'則企圖去寫這個地方,編譯器當(dāng)然不會答應(yīng)。

  問題:const變量 & 字符串常量2

  請問char a[3] = "abc" 合法嗎?使用它有什么隱患?

  答案與分析

  在標(biāo)準(zhǔn)C中這是合法的,但是它的生存環(huán)境非常狹小;它定義一個大小為3的數(shù)組,初始化為“abc”,,注意,它沒有通常的字符串終止符'\0',因此這個數(shù)組只是看起來像C語言中的字符串,實質(zhì)上卻不是,因此所有對字符串進(jìn)行處理的函數(shù),比如strcpy、printf等,都不能夠被使用在這個假字符串上。

  問題5:const & 指針

  類型聲明中const用來修飾一個常量,有如下兩種寫法,那么,請問,下面分別用const限定不可變的內(nèi)容是什么?

  1)、const在前面

const int nValue; //nValue是const
const char *pContent; //*pContent是const, pContent可變
const (char *) pContent;//pContent是const,*pContent可變
char* const pContent; //pContent是const,*pContent可變
const char* const pContent; //pContent和*pContent都是const

  2)、const在后面,與上面的聲明對等

int const nValue; // nValue是const
char const * pContent;// *pContent是const, pContent可變
(char *) const pContent;//pContent是const,*pContent可變
char* const pContent;// pContent是const,*pContent可變
char const* const pContent;// pContent和*pContent都是const

  答案與分析:

  const和指針一起使用是C語言中一個很常見的困惑之處,在實際開發(fā)中,特別是在看別人代碼的時候,常常會因為這樣而不好判斷作者的意圖,下面講一下我的判斷原則:

  沿著*號劃一條線,const和誰在一邊,那么誰就是const,即const限定的元素就是它。你可以根據(jù)這個規(guī)則來看上面聲明的實際意義,相信定會一目了然。

  另外,需要注意:對于const (char *) ; 因為char *是一個整體,相當(dāng)于一個類型(如 char),因此,這是限定指針是const。
Posted on 2006-11-21 16:39 艾凡赫 閱讀(536) 評論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久国产综合久久91精品网站 | 99热这里只有成人精品国产| 国产日韩1区| 欧美日韩精品一二三区| 亚洲天堂偷拍| 久久成人免费网| 久久国产88| 在线看无码的免费网站| 亚洲靠逼com| 国内精品国语自产拍在线观看| 亚洲人成网站色ww在线| 久久久精品欧美丰满| 欧美激情第三页| 日韩视频在线播放| 欧美国产免费| 新狼窝色av性久久久久久| 久久久99国产精品免费| 99re8这里有精品热视频免费 | 国产区二精品视| 久久久国际精品| 亚洲人体一区| 亚洲国产精品欧美一二99| 亚洲一区二区三区在线视频| 国产日韩欧美在线观看| 亚洲国产精品一区在线观看不卡 | 亚洲欧美资源在线| 欧美暴力喷水在线| 久久手机精品视频| 欧美视频一区| 免费观看日韩av| 国产精品久久二区| 精品动漫3d一区二区三区免费| 欧美久久久久久久| 欲香欲色天天天综合和网| 99re8这里有精品热视频免费 | 久久久噜久噜久久综合| 亚洲高清123| 亚洲欧美激情四射在线日| 美脚丝袜一区二区三区在线观看| 日韩视频在线一区二区三区| 久久精品免费观看| 亚洲一区二区三区免费视频| 一区二区三区四区五区精品| 洋洋av久久久久久久一区| 一区在线观看视频| 欧美久久精品午夜青青大伊人| av成人免费在线| 麻豆成人综合网| 男人的天堂成人在线| 国产一区二区精品丝袜| 亚洲欧美亚洲| 欧美一区二视频| 国产精品羞羞答答| 亚洲视频网站在线观看| 亚洲性色视频| 欧美午夜宅男影院在线观看| 99精品国产在热久久| 亚洲毛片在线| 欧美精品七区| 99在线精品观看| 亚洲在线一区二区| 国产精品一级久久久| 亚洲欧美另类在线| 久久www成人_看片免费不卡| 国产日韩欧美二区| 久久国产精品久久久久久电车| 久久色在线播放| 亚洲黄色一区| 欧美成人乱码一区二区三区| 91久久久亚洲精品| 亚洲永久精品大片| 国产精品少妇自拍| 欧美一区二区成人6969| 久久亚洲私人国产精品va| 伊人成人开心激情综合网| 久久久亚洲欧洲日产国码αv | 欧美日韩一区视频| 亚洲欧美日韩视频一区| 久久精品国产综合精品| 伊人久久成人| 欧美日韩美女在线| 午夜精品久久久久久久99水蜜桃| 久久亚洲春色中文字幕| 亚洲人成人99网站| 国产精品美女在线观看| 久久精品1区| 亚洲免费电影在线观看| 久久国产福利| 夜夜嗨网站十八久久| 国产日韩欧美一区在线| 欧美激情一区在线观看| 亚洲在线视频免费观看| 欧美成人在线免费观看| 亚洲在线视频观看| 亚洲国产精品尤物yw在线观看| 欧美三级日韩三级国产三级| 久久精品亚洲乱码伦伦中文| 亚洲精品久久久久久久久久久久久| 欧美一区二区日韩一区二区| 亚洲青涩在线| 国产女主播在线一区二区| 欧美a级理论片| 欧美伊人精品成人久久综合97| 亚洲国产美国国产综合一区二区| 欧美在线国产精品| 一区二区三区日韩在线观看| 精久久久久久| 国产乱码精品一区二区三区av| 欧美高清在线视频| 久久大综合网| 欧美一级网站| 久久国产主播精品| 一本色道久久综合狠狠躁的推荐| 国产主播一区二区三区四区| 欧美日韩另类视频| 免费国产自线拍一欧美视频| 欧美一区二区在线播放| 在线视频欧美日韩精品| 亚洲福利电影| 久久综合久久综合久久综合| 午夜精品区一区二区三| 亚洲另类自拍| 亚洲人成在线观看| 黄色成人av| 国产伊人精品| 国产伦精品一区二区三区高清| 欧美日韩亚洲一区在线观看| 欧美电影在线观看| 欧美a级在线| 蜜桃久久精品乱码一区二区| 久久精品国产亚洲一区二区| 亚洲欧美日韩综合国产aⅴ| 99国产精品私拍| 日韩一级视频免费观看在线| 亚洲日韩欧美视频| 亚洲日本一区二区| 99国产精品| 日韩视频一区二区| 在线视频免费在线观看一区二区| 一区二区三区国产精华| 99在线热播精品免费| av成人动漫| 中文在线资源观看网站视频免费不卡 | 一区二区三区免费看| 亚洲人永久免费| 亚洲欧洲视频在线| 亚洲精品免费一区二区三区| 亚洲精品免费在线播放| 亚洲精品乱码久久久久久| 亚洲精品人人| 一本色道久久加勒比精品| 99国产精品久久久久久久| 亚洲夜晚福利在线观看| 午夜精品美女久久久久av福利| 亚欧成人精品| 久久偷窥视频| 欧美国产日韩一区| 欧美三级日韩三级国产三级| 国产精品亚洲а∨天堂免在线| 国产一区亚洲一区| 亚洲人成7777| 亚洲综合精品| 久久综合伊人| 最新国产成人av网站网址麻豆| 亚洲毛片av| 午夜精品在线看| 噜噜爱69成人精品| 欧美日韩国产成人在线免费| 国产欧美日韩一级| 亚洲激情在线激情| 亚洲无吗在线| 久久在精品线影院精品国产| 亚洲高清自拍| 亚洲自拍另类| 欧美成人久久| 国产三级精品三级| 亚洲九九爱视频| 欧美专区18| 91久久精品久久国产性色也91| 亚洲影视在线| 欧美成人日本| 国产永久精品大片wwwapp| 在线中文字幕不卡| 久久人人97超碰人人澡爱香蕉| 日韩午夜中文字幕| 久久午夜精品| 国产精品自拍在线| 亚洲精品午夜| 久久久人成影片一区二区三区观看| 欧美a一区二区| 亚洲免费观看视频| 欧美在线一级va免费观看| 欧美精品播放| 一区二区三区在线高清| 亚洲影院污污.| 亚洲黄色在线观看| 久久精品成人欧美大片古装| 欧美三级日本三级少妇99| 亚洲国产免费| 久久人体大胆视频|