函式指標、陣列指標、指標陣列、二級指標
阿新 • • 發佈:2018-12-16
函式指標、陣列指標、指標陣列、二級指標
函式指標
函式名就是個指標
- 函式的指標
'''
bool func(int num)
{
printf("heihei");
}
int main()
{
bool (func_p)(int num);
func_p = func;
func_p(10);
}
'''
自定義函式指標來指向函式
寫出函式宣告
為函式名新增小括號
修改函式名,在函式名前面加;
此函式指標便指向函數了,便可以通過指標呼叫函數了。
函式指標可以把函式當作引數在函式之間進行傳遞,實現函式的回撥。
例如函式:void qsort(void* base,size_t nmemb,size_t size,int(* compar)(const void,const void
可以把現在實現的程式碼函式compar指標傳給上函式實現排序。二級指標
簡言之即指標的指標。
例如:float f = 3.14;float* p = &f(一級指標);float** pp = &p(一級指標的地址)。
p <=> f;
pp <=> p;
**pp <=>*p <=> f;
函式之間需要共享普通變數使用一級指標,需要共享指標變數使用二級指標。
指標陣列
陣列元素的型別是指標變數。
char* arr[5];<==> char* p1,p2,p3,p4,p5;
即sizeof(arr) =20;儲存的是指標型別的。
陣列指標
指向陣列的指標。
int arr[10];
int (*p)[10] = NULL;
p+1 = 40,陣列指標加1即加了整個陣列。
陣列指標可以用於二維陣列。
int arr[][5] = {{1,1,1},{2,3,2},{1,1,1},{2,2,2},{1,1,1}};
傳陣列需要傳行列,但用陣列指標只需要傳行或列。
注:二維陣列其實是用很多一維陣列模擬的,
11111111111111111111111111111
1111