2009年3月9日 星期一

pointer function 與 return pointer

今天意外的發現,宣告一個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: 函式指標

沒有留言:

張貼留言