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...