2014-01-24 67 views
0

當函數由struct中定義的類型定義時,實際上意味着什麼。爲了更好地理解我這裏有一個例子:c中的無效函數

typedef struct node { 
int number; 
struct node *left, *right; 
} Node; 

typedef Node *tree; 

tree makenew (void) { return NULL; } 

什麼是這個函數(makenew)由樹從函數定義爲int或無效定義不同,這是否意味着該函數必須返回一個值,樹?

+5

@EdHeal:如果你建議'tree makenew()',這是一個非原型聲明;它保留了與ANSI C之前兼容的過時特性,並且它不會讓編譯器檢查調用者是否正確傳遞參數。 '樹makenew(void)'是首選。 (也許你正在考慮C++,它有不同的規則。) –

+0

傢伙,這裏的(void)的實際含義是什麼? – user3053047

+0

@KeithThompson - 只是一個評論,它不再需要。但是你可以把它插入。爲什麼我把它作爲註釋 –

回答

2
int foo(void) { return 1; } // returns an int 

void foo(void) { return; } // returns nothing 

tree foo(void) { return NULL; } // returns a "Node *" which is typedef'ed to tree 
           // the value of the pointer is NULL