今天意外的發現,宣告一個return pointer的function與pointer function非常相似
下面就是宣告一個回傳值為int指標的foo函式
int* foo();
下面就是宣告一個回傳值為int的pointer function
int *foo();
有沒有覺得很像啊?不只是很像,根本是一模一樣。
好像compiler會幫我們自己判斷。
為了避免compiler判斷錯誤,我們可以使用以下的方法來強制定義那一個*號是要形容前面的int還是後面的foo
重新宣告一次
下面就是宣告一個回傳值為int指標的foo函式
(int*) foo();
下面就是宣告一個回傳值為int的pointer function
int (*foo)();
而若想要宣告一個回傳值為int的指標的pointer function
(int*) (*foo)();
main.c
#include <stdio.h>
#include <stdlib.h>
int* getvalue()
{
int *y;
y = malloc(sizeof(int));
*y=1;
return y;
}
int main()
{
int *x;
x = getvalue();
printf("value:%d\n",*x);
return 0;
}
參考資料:
C++ Gossip: 函式指標
沒有留言:
張貼留言