c語言這個定義看不懂
char *(*a[3])(int **p)
a是一個3個元素的指標陣列,每個指標指向一個原型為char *func(int **p)的函式
那這個函式回傳型別不一樣啊?
還有這個原型char *func(int **p)是指標函式嗎?
char *func(int **p)我這樣理解對嗎?func是一個回傳型別是int 二級指標,char *指標指向這個函式,
uj5u.com熱心網友回復:
char *(*a[3])(int **p) 代表是一個3個元素的陣列,其中的元素型別是 char* func(int**)這就是一個函式,這個函式的回傳值是char* 引數是int**
uj5u.com熱心網友回復:
char *func(int **p
這個是函式變數;
可以用a[0] = func;這樣賦值;也可以a[0] = &func;
呼叫可以用a[0](p);
例子如下:
#include <stdio.h>
char *func(int **a);
int main(void)
{
int **p = NULL;
char *(*a[3])(int **);
//兩種寫法一樣的
//a[0] = func;
a[0] = &func;
a[0](p);
return 0;
}
char *func(int **a)
{
printf("%p\n", a);
printf("helloworld!\n");
return NULL;
}
因為func函式名就是地址名,加不加&都是可以的。
uj5u.com熱心網友回復:
意思是陣列里面三個元素都是回傳型別是char 指標的函式這個函式的引數是int的二級指標。對嗎?老師uj5u.com熱心網友回復:
不是很懂,char *func (int **a)意思是這個函式引數是int 二級指標,回傳的是char型別指標對嗎?uj5u.com熱心網友回復:
#include <stdio.h>
char* f1(int**){
printf("%s", __FUNCTION__);
return nullptr;
}
char* f2(int**){
printf("%s", __FUNCTION__);
return nullptr;
}
char* f3(int** ){
printf("%s", __FUNCTION__);
return nullptr;
}
char* (*a[3])(int** p) {f1,f2,f3};
int main(){
a[0](nullptr);
a[1](nullptr);
a[2](nullptr);
}
uj5u.com熱心網友回復:
是不是char *func(int **p)這個函式接受一個型別是int的二級指標然后回傳一個值是char型別的指標,這樣理解對嗎uj5u.com熱心網友回復:
老師可以不傳入空引數嗎?來個稍微復雜的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269217.html
標籤:C語言
上一篇:C語言,程式錯誤怎么改
