C語言的指標

2021-09-28 21:51:53 字數 2721 閱讀 9110

6.二維陣列的指標問題

int (*p)(int ,int);
注意*p兩側的括號不可省略。否則

int *p(int,int);//相當於int*(p(int,int));,就成了宣告乙個p函式,這個函式返回值是指向整型變數的指標。
int max(int x,int y);

p=max;

(2)對指向函式的指標變數不能進行算術運算,如p+n,p++,p–等運算是無意義的。

(3)用函式名呼叫函式只能呼叫所指定的乙個函式,而通過指標變數呼叫函式比較靈活,可以根據不同情況先後呼叫不同的函式。如:

int max(int,int);

int min(int x,int y);

int (*p)(int ,int);

if() p=max;

else p=min;

(*p)(a,b);

void fun(int (*x1)(int),int (*x2)(int,int));
在呼叫函式fun時,實參為兩個函式名f1,f2,給形參傳遞的是函式f1,f2的入口位址。這樣在函式fun中就可以呼叫f1,f2函式了。如果在每次呼叫fun函式時,要呼叫的函式不是固定的,這次呼叫了f1,f2,而下次要呼叫f3,f4,這時候使用指標變數就比較方便了。

書p275.

注:

#include//對於二維陣列指標的用法

//輸出結果為13.000000 4.000000

int main()

;float *pt1,*pt2;

pt1 = *(score+3);//相當於score[0+3][0]

pt2 = (*score+3);//相當於score[0][0+3]

printf("%f\n",*pt1);

printf("%f\n",*pt2);

return 0;

}

指標陣列比較適合用來指向若干個字串。

char **p;//相當於char* (*p); 為指向指標資料的指標。即*p=存p指標記憶體單元的位址。
在dos,unix,或者linux等系統的操作命令狀態下,字啊命令列中包括了命令名和需要傳給main函式的引數。

一般形式為:

命令名 引數1 引數2 ……引數n

file1 china beijing

實際上,檔名應包括碟符、路徑,今為簡化起見,用file1來代表。

main函式中形參argc是指命令列中引數的個數(注意,檔名也算乙個引數)。第二個形參ar**是乙個指向字串的指標陣列。如:

int main(int argc,int *ar**);
在visual c++環境下對程式編譯和連線後,選擇「工程」->「設定」->「除錯」->"程式變數"命令,輸入「china beijing」也可以。

c程式設計第七章 7.4(2)和7.4(3)中實現

(1)二維陣列int arr[3][4]是定義了乙個int(*)[4]型別的指標常量

(2)temp[i]=(int *)malloc(sizeof(int)*3);// 使每乙個temp[i]所指向的區域都有三個整型大小的空間(反過來理解將三個int大小的空間的位址給了temp[i])

(3)指標定義容易混淆的

int

(*p)[10

];//乙個指向10個整型陣列的指標p

int(

*)p[10]

;//優先順序高於*,所以與下面的等價

int*p[10]

;//指標陣列,每個指標指向乙個int

//第一種方法,指標的指標,比較好理解

char

**str;

str =

(char**

)malloc

(sizeof

(char*)

*20);

for(i=

0;i)//第一種初始化方法,直接儲存

//str[0] = "this is the fist line.";

//str[1] = "another line.";

//從鍵盤中輸入,『#』結束輸入

for(i =

0; i < n; i++

)

//第二種方法,指標陣列

#include

#include

//寫乙個函式,使給定的乙個3x3的二維整型陣列轉置,即行列互換

int(

*transposition

(int arr[3]

[3])

)[3]

//二維陣列int arr[3][3]是定義了乙個int(*)[3]型別的指標常量

}return temp;

}int

main()

;int

(*result)[3

];result =

transposition

(arr)

;for

(i=0

;i<

3;i++

)printf

("\n");

}return0;

}

C語言的指標

如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。在前面已經介紹過,通過指標訪問變數稱為間接訪問。由於指標變數直接指向變數,所以稱為 單級間址 而如果通過指向指標的指標變數來訪問變數則構成 二級間址 從下圖可以看到,name是乙個指標陣列,它的每乙個元素是乙個指標...

C語言的指標

1 num 使num對應的記憶體空間的值加一 0x1000 0x1004 2 p p所指向的記憶體空間的值加一 3 p p對應的記憶體空間的值加一 0x1000 0x1001 指向的記憶體空間 根據指標變數對應的記憶體空間儲存的位址,再找到該位址所對應的記憶體空間 int p 整型指標的指標的指標變...

C語言的指標

const與指標 遵循靠近誰就修飾誰的原則 1.const int p 靠近所以修飾指標所指向的值,因而指標指向的值不可以修改。但是原來變數可以修改,只是不能用 p修改而已 2.int const p 和上面一樣。3.int const p 靠近變數本身,所以指標位址不能修改。4.const int...