指標小結(摘自C 程式設計教程)

2021-09-30 18:57:12 字數 1968 閱讀 6093

1.int *p;

p是一般指標,用於指向整形量。被指向的整形量可以是簡單的整形量,也可以是一維整形陣列或二維整形陣列中的乙個元素,因為陣列的每乙個元素都是整形量。int *型別的指標與一維整形陣列名在資料型別上等價,即一維整形陣列名是指標,其型別也是int *。注意,p是指標變數,其值可變;而陣列名是指標常量,其值不可變。

2.int (p)[m];

p指向含有m個元素的一維陣列。可指向每行含有m個元素的二維陣列的一樣,也就是說他是二維陣列的行指標,p與二維陣列名在資料型別上等價。若有定義「int a[n][m];」,則p和a的型別都是int ()[m]。

例如:

int a[3]

[4],

(*p)[4

];p=a;

//將陣列a的首位址賦值給指標p,p指向a[0]

p++; //正確,因為p是指標變數,p指向a[1],a行

a++; //錯誤,因為a是指標常量

a行運算結束後p指向a陣列的下一行元素,即指向a[1]。a[1]是乙個位址運算表示式,是「虛」的位址表示。所謂「虛」是指a[1]本身不佔儲存空間。請與下述第四點比較。

3.int *p[m];

p是指標陣列,含有m個元素,每個元素都是整形指標。p指標的型別是int *[ ]。

4. int **p;

p是指向整形指標的指標。p指標的型別是int **,與整形指標陣列名的型別是int *[ ]等價。

例如:

int

*a[10],

**p;

p=a;

p++;

//正確,因為p是指標變數,a行

a++;

//錯誤,因為a是指標常量

a行運算結束後,p指向a陣列的下乙個元素,即指向a[1]。a[1]是具有儲存空間的乙個指標,是乙個「實」的位址表示。所謂「實」是指a[1]本身佔儲存空間。

5. int (*p)(int,int);

p是乙個函式指標,可指向引數是兩個整形量並且返回整形量的函式。從語法形式上卡,本節中第2點、第3點定義二維陣列行指標和指標陣列是,使用的軍事方括號,只有在定義指向函式的指標時,使用的是圓括號。

6.int *f()

與前面的1~5點不同,這是函式定義(函式體內部的語句被省略了),f是函式名,它返回整形指標,即發揮值型別為int *。本節前面1~5節定義了五種不同型別的指標變數,而本函式定義知識制定函式的返回值型別是指標型別的量,並沒有引入新的指標型別,知識將第1點中國定義的最普通的指標作為函式的返回值。可以類推,如果有函式定義 int **f(),則表示函式的返回值型別為指向整形指標的指標。

7.void型別指標

此類指標比較特殊,在用法上要注意以下兩點。

(1)任何型別的指標都已直接賦值給void型別的指標,無須進行強制型別轉換。如:

void

*p1;

int x,

*p2=

&x;p1=p2;

void型別指標也可以直接賦值給其他型別的指標,但最好進行強制型別轉化,以明確表示指標的型別,例如:

p2=

(int

*) p1;

(2)不能對void指著進行算術運算。

8.空指標null

c++將斧蛤常量null的值定義為0,通常用來表示乙個空指標。例如:

int

*p=null

;//表示用空指標null初始化指標變數p

int m=0;

//表示用整形常量0初始化整型變數m

c++規定,若乙個指標值為null,他是空指標,不指向任何量。儘管null的值與0相同,但是兩者的意義不同。假定指標變數為p,判斷它是否為空指標的if語句可以使「if(p == null)」或「if(p!=null)」,強調p是指標變數。但不要寫成「if(p==0)」或「if(p!=0)」,他們都影響程式的可讀性,同理,也不要寫成「if§」或「if(!p)」。

c程式設計 指標小結

1.首先要準確地弄清楚指標的含義。指標就是位址,凡是出現 指標 的地方,都可以用 位址 代替,例如,變數的指標就是變數的位址,指標變數就是位址變數 要區別指標和指標變數。指標就是位址本身,而指標變數是用來存放位址的變數 2.什麼叫 指向 位址就意味著指向,因為通過位址能找到具有該位址的物件。對於指標...

c 指標小結

宣告指向特定型別的指標,使用以下格式 typename pointername 示例 double pn 宣告乙個double型別的指標 char pc 宣告乙個char型別的指標應將記憶體位址賦值給指標,對變數名應用 運算子,來獲得變數位址,或使用new運算子返回未命名的記憶體位址。示例 doub...

C語言之const常量(摘自C和指標)

c語言中我們可以使用const和define關鍵字宣告常量,所謂常量就是指值不能修改的量。如下面的例子所示 int const a const int a 這兩條語句都把a宣告為乙個常量 整數 它的值不能被修改。由於常量的值無法被修改,所以不能用任何其他東賦值給它,如此一來,怎樣使它在一開始就擁有乙...