2010-11-26 9 views
3
typedef int F1(int x); 

int F1(int x); 

はどちらか、私には同じようだtypedefか...cのこれらの2つの宣言の違いは何ですか?

+0

をそれは同じであるため、戻り値の型について言及していない場合でも、デフォルトの戻り値の型はintです。しかし、これは異なるデータ型を使用する場合とは異なります.http://www.geekintervi ew.com/question_details/31059 –

答えて

6

typedef変数を宣言しません。型を宣言します。

あなたが言う後:と同等です

F1 myfunction; 

typedef int F1(int x); 

以降のコードでは、あなたがこのことができます。この場合、

int myfunction(int x); 
+0

'typedef'を使用しないと' F1 myfunction'を使用できません。 – wp2

+0

@ wp2 - 正確に。 http://msdn.microsoft.com/en-us/library/05w82thz(VS.71).aspxを参照してください。 – BeemerGuy

6
typedef int F1(int x); 

であなたは、関数は、引数として整数を取り、整数

int F1(int x); 

を返す関数型のF1を定義しますあなたはF1と呼ばれる関数を定義します。

+2

「typedef int(* F1)(int x);」と書くと、その違いははっきりします。 – eyalm

+1

@eylam - 2つは同等ではありません。あなたの関数ポインタ型を宣言します。オリジナルは関数型を宣言します。 –

+1

typedef int F1(int x)は関数ポインタではありません。 –

関連する問題