浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » EDA/PLD

C/C++中構(gòu)造通用的對(duì)象鏈表

發(fā)布時(shí)間:2008/9/12 0:00:00 訪問(wèn)次數(shù):467

  復(fù)雜的c/c++聲明并不是好的編程風(fēng)格;這里僅僅是教你如何去理解這些聲明。注意:為了保證能夠在同一行上顯示代碼和相關(guān)注釋,本文最好在至少1024x768分辨率的顯示器上閱讀。鏈表的難點(diǎn)在于必須復(fù)制鏈表處理函數(shù)來(lái)處理不同的對(duì)象,即便邏輯是完全相同的。

  基礎(chǔ)

  讓我們從一個(gè)非常簡(jiǎn)單的例子開(kāi)始,如下:

  int n;

  這個(gè)應(yīng)該被理解為“declare n as an int”(n是一個(gè)int型的變量)。

  接下去來(lái)看一下指針變量,如下:

  int *p;

  這個(gè)應(yīng)該被理解為“declare p as an int *”(p是一個(gè)int *型的變量),或者說(shuō)p是一個(gè)指向一個(gè)int型變量的指針。我想在這里展開(kāi)討論一下:我覺(jué)得在聲明一個(gè)指針(或引用)類型的變量時(shí),最好將*(或&)寫(xiě)在緊靠變量之前,而不是緊跟基本類型之后。這樣可以避免一些理解上的誤區(qū),比如:

  int* p,q;

  第一眼看去,好像是p和q都是int*類型的,但事實(shí)上,只有p是一個(gè)指針,而q是一個(gè)最簡(jiǎn)單的int型變量。

  我們還是繼續(xù)我們前面的話題,再來(lái)看一個(gè)指針的指針的例子:

  char **argv;

  理論上,對(duì)于指針的級(jí)數(shù)沒(méi)有限制,你可以定義一個(gè)浮點(diǎn)類型變量的指針的指針的指針的指針...

  再來(lái)看如下的聲明:

  int rollnum[30][4];

  int (*p)[4]=rollnum;

  int *q[5];

  這里,p被聲明為一個(gè)指向一個(gè)4元素(int類型)數(shù)組的指針,而q被聲明為一個(gè)包含5個(gè)元素(int類型的指針)的數(shù)組。

  另外,我們還可以在同一個(gè)聲明中混合實(shí)用*和&,如下:

  int **p1; // p1 is a pointer to a pointer to an int.

  int *&p2; // p2 is a reference to a pointer to an int.

  int &*p3; // error: pointer to a reference is illegal.

  int &&p4; // error: reference to a reference is illegal.

  注:p1是一個(gè)int類型的指針的指針;p2是一個(gè)int類型的指針的引用;p3是一個(gè)int類型引用的指針(不合法。籶4是一個(gè)int類型引用的引用(不合法。。

  const修飾符

  當(dāng)你想阻止一個(gè)變量被改變,可能會(huì)用到const關(guān)鍵字。在你給一個(gè)變量加上const修飾符的同時(shí),通常需要對(duì)它進(jìn)行初始化,因?yàn)橐院蟮娜魏螘r(shí)候你將沒(méi)有機(jī)會(huì)再去改變它。例如:

  const int n=5;

  int const m=10;

  上述兩個(gè)變量n和m其實(shí)是同一種類型的--都是const int(整形恒量)。因?yàn)閏++標(biāo)準(zhǔn)規(guī)定,const關(guān)鍵字放在類型或變量名之前等價(jià)的。我個(gè)人更喜歡第一種聲明方式,因?yàn)樗怀隽薱onst修飾符的作用。

  當(dāng)const與指針一起使用時(shí),容易讓人感到迷惑。例如,我們來(lái)看一下下面的p和q的聲明:

  const int *p;

  int const *q;

  他們當(dāng)中哪一個(gè)代表const int類型的指針(const直接修飾int),哪一個(gè)代表int類型的const指針(const直接修飾指針)?實(shí)際上,p和q都被聲明為const int類型的指針。而int類型的const指針應(yīng)該這樣聲明:

  int * const r= &n; // n has been declared as an int

  這里,p和q都是指向const int類型的指針,也就是說(shuō),你在以后的程序里不能改變*p的值。而r是一個(gè)const指針,它在聲明的時(shí)候被初始化指向變量n(即r=&n;)之后,r的值將不再允許被改變(但*r的值可以改變)。

  組合上述兩種const修飾的情況,我們來(lái)聲明一個(gè)指向const int類型的const指針,如下:

  const int * const p=&n // n has been declared as const int

  下面給出的一些關(guān)于const的聲明,將幫助你徹底理清const的用法。不過(guò)請(qǐng)注意,下面的一些聲明是不能被編譯通過(guò)的,因?yàn)樗麄冃枰诼暶鞯耐瑫r(shí)進(jìn)行初始化。為了簡(jiǎn)潔起見(jiàn),我忽略了初始化部分;因?yàn)榧尤氤跏蓟a的話,下面每個(gè)聲明都將增加兩行代碼。

  char ** p1; // pointer to pointer to char

  const char **p2; // pointer to pointer to const char

  char * const * p3; // pointer to const pointer to char

  const char * const * p4; // pointer to const pointer to const char

  char ** const p5; // const pointer to pointer to char

  const char ** const p6; // const pointer to pointer to const char

  char * const * const p7; // const pointer to const pointer to char

  const char * const * const p8; // const pointer to const pointer to const char

  注:p1是指向char類型的指針的指針;p2是指向const char類型的指針的指針;p3是指向char類型的const指針;p4是指向const ch

  復(fù)雜的c/c++聲明并不是好的編程風(fēng)格;這里僅僅是教你如何去理解這些聲明。注意:為了保證能夠在同一行上顯示代碼和相關(guān)注釋,本文最好在至少1024x768分辨率的顯示器上閱讀。鏈表的難點(diǎn)在于必須復(fù)制鏈表處理函數(shù)來(lái)處理不同的對(duì)象,即便邏輯是完全相同的。

  基礎(chǔ)

  讓我們從一個(gè)非常簡(jiǎn)單的例子開(kāi)始,如下:

  int n;

  這個(gè)應(yīng)該被理解為“declare n as an int”(n是一個(gè)int型的變量)。

  接下去來(lái)看一下指針變量,如下:

  int *p;

  這個(gè)應(yīng)該被理解為“declare p as an int *”(p是一個(gè)int *型的變量),或者說(shuō)p是一個(gè)指向一個(gè)int型變量的指針。我想在這里展開(kāi)討論一下:我覺(jué)得在聲明一個(gè)指針(或引用)類型的變量時(shí),最好將*(或&)寫(xiě)在緊靠變量之前,而不是緊跟基本類型之后。這樣可以避免一些理解上的誤區(qū),比如:

  int* p,q;

  第一眼看去,好像是p和q都是int*類型的,但事實(shí)上,只有p是一個(gè)指針,而q是一個(gè)最簡(jiǎn)單的int型變量。

  我們還是繼續(xù)我們前面的話題,再來(lái)看一個(gè)指針的指針的例子:

  char **argv;

  理論上,對(duì)于指針的級(jí)數(shù)沒(méi)有限制,你可以定義一個(gè)浮點(diǎn)類型變量的指針的指針的指針的指針...

  再來(lái)看如下的聲明:

  int rollnum[30][4];

  int (*p)[4]=rollnum;

  int *q[5];

  這里,p被聲明為一個(gè)指向一個(gè)4元素(int類型)數(shù)組的指針,而q被聲明為一個(gè)包含5個(gè)元素(int類型的指針)的數(shù)組。

  另外,我們還可以在同一個(gè)聲明中混合實(shí)用*和&,如下:

  int **p1; // p1 is a pointer to a pointer to an int.

  int *&p2; // p2 is a reference to a pointer to an int.

  int &*p3; // error: pointer to a reference is illegal.

  int &&p4; // error: reference to a reference is illegal.

  注:p1是一個(gè)int類型的指針的指針;p2是一個(gè)int類型的指針的引用;p3是一個(gè)int類型引用的指針(不合法!);p4是一個(gè)int類型引用的引用(不合法!)。

  const修飾符

  當(dāng)你想阻止一個(gè)變量被改變,可能會(huì)用到const關(guān)鍵字。在你給一個(gè)變量加上const修飾符的同時(shí),通常需要對(duì)它進(jìn)行初始化,因?yàn)橐院蟮娜魏螘r(shí)候你將沒(méi)有機(jī)會(huì)再去改變它。例如:

  const int n=5;

  int const m=10;

  上述兩個(gè)變量n和m其實(shí)是同一種類型的--都是const int(整形恒量)。因?yàn)閏++標(biāo)準(zhǔn)規(guī)定,const關(guān)鍵字放在類型或變量名之前等價(jià)的。我個(gè)人更喜歡第一種聲明方式,因?yàn)樗怀隽薱onst修飾符的作用。

  當(dāng)const與指針一起使用時(shí),容易讓人感到迷惑。例如,我們來(lái)看一下下面的p和q的聲明:

  const int *p;

  int const *q;

  他們當(dāng)中哪一個(gè)代表const int類型的指針(const直接修飾int),哪一個(gè)代表int類型的const指針(const直接修飾指針)?實(shí)際上,p和q都被聲明為const int類型的指針。而int類型的const指針應(yīng)該這樣聲明:

  int * const r= &n; // n has been declared as an int

  這里,p和q都是指向const int類型的指針,也就是說(shuō),你在以后的程序里不能改變*p的值。而r是一個(gè)const指針,它在聲明的時(shí)候被初始化指向變量n(即r=&n;)之后,r的值將不再允許被改變(但*r的值可以改變)。

  組合上述兩種const修飾的情況,我們來(lái)聲明一個(gè)指向const int類型的const指針,如下:

  const int * const p=&n // n has been declared as const int

  下面給出的一些關(guān)于const的聲明,將幫助你徹底理清const的用法。不過(guò)請(qǐng)注意,下面的一些聲明是不能被編譯通過(guò)的,因?yàn)樗麄冃枰诼暶鞯耐瑫r(shí)進(jìn)行初始化。為了簡(jiǎn)潔起見(jiàn),我忽略了初始化部分;因?yàn)榧尤氤跏蓟a的話,下面每個(gè)聲明都將增加兩行代碼。

  char ** p1; // pointer to pointer to char

  const char **p2; // pointer to pointer to const char

  char * const * p3; // pointer to const pointer to char

  const char * const * p4; // pointer to const pointer to const char

  char ** const p5; // const pointer to pointer to char

  const char ** const p6; // const pointer to pointer to const char

  char * const * const p7; // const pointer to const pointer to char

  const char * const * const p8; // const pointer to const pointer to const char

  注:p1是指向char類型的指針的指針;p2是指向const char類型的指針的指針;p3是指向char類型的const指針;p4是指向const ch

相關(guān)IC型號(hào)

熱門點(diǎn)擊

 

推薦技術(shù)資料

聲道前級(jí)設(shè)計(jì)特點(diǎn)
    與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!