1. 程式人生 > >函式指標、陣列指標、指標陣列、二級指標

函式指標、陣列指標、指標陣列、二級指標

函式指標、陣列指標、指標陣列、二級指標

函式指標

函式名就是個指標
  1. 函式的指標
    '''
    bool func(int num)
    {
    printf("heihei");
    }

int main()
{
bool (func_p)(int num);
func_p = func;
func_p(10);
}
'''
自定義函式指標來指向函式
寫出函式宣告
為函式名新增小括號
修改函式名,在函式名前面加

此函式指標便指向函數了,便可以通過指標呼叫函數了。

  1. 函式指標可以把函式當作引數在函式之間進行傳遞,實現函式的回撥。

    例如函式: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