由于工作需要轉(zhuǎn)成了C#,好久沒有學(xué)C++了,之前學(xué)了一段時(shí)間的C++,也寫過兩篇,放在博客園里的,現(xiàn)在有專門的C++博客,以后就在這里寫了。以下是前兩篇的地址
C++之父力作學(xué)習(xí)筆記1 C++之父力作學(xué)習(xí)筆記
今天來簡單說一下指針,可以說指針是一個(gè)難點(diǎn),是一把雙刃劍,也許高手才能運(yùn)用自如,像我這樣的菜鳥就會(huì)傷到自己。呵呵,廢話少說。
指針:對(duì)類型T,T*是“到T的指針”,也就是說,一個(gè)類型為T*的變量能保存一個(gè)類型T的對(duì)象的地址。例如:
char c='a';
char *p=&c;//p保存著c的地址用圖表示是:

這些都挺容易理解的,不幸的是,到數(shù)組的指針和到函數(shù)的指針需要更復(fù)雜的記法:
int* pi; //到int的指針
char** ppc; //到字符的指針的指針
int* ap[10]; //10個(gè)到int的指針的數(shù)組
int (*fp)(char*); //到函數(shù)的指針,這種函數(shù)以char*為參數(shù),返回int
int* f(char*); //有一個(gè)char*參數(shù)的函數(shù),返回一個(gè)到ini的指針 對(duì)指針的基本操作是間接引用,也就是說引用被指針?biāo)傅哪莻€(gè)對(duì)象。這一操作也被稱作間接(indirectionn)。間接運(yùn)算符是(前綴的)一元*。例如
char c='a';
char* p=&c; //p保存著c的地址
char c2=*p; //c2=='a'被p所指的變量是c,而c中所存的值是'a'。所以由*p賦給c2的值就是'a'.
注意:這里解釋一下 間接運(yùn)算符是(前綴的)一元*。這就要扯到聲明的結(jié)構(gòu)了。
一個(gè)聲明由四個(gè)部分組成:一個(gè)可選的“描述符”,一個(gè)基礎(chǔ)類型,一個(gè)聲明符,還有一個(gè)可選的初始式。除了函數(shù)和名字空間之外,其他聲明都應(yīng)該由分號(hào)結(jié)束。例如:

char* kings[]=
{"Antigonus","Seleucus","Ptolemy"};這里的基礎(chǔ)類型是char,聲明符是*kings[],而初始化是={...}。
描述符是一個(gè)開始關(guān)鍵字,例如:virtual和extern,它們說明了被聲明事物的某些非類型的屬性。
聲明符由一個(gè)名字和可選的若干聲明運(yùn)算符組成。最常用的聲明運(yùn)算符是
* 指針 前綴
*const 常量指針 前綴
& 引用 前綴
[] 數(shù)組 后綴
() 函數(shù) 后綴