2014-02-20 35 views
-6

以下兩個函數定義有什麼區別?操作符和指針操作符的地址

函數聲明:

void fun(int* p); 

功能定義1:

   void fun (int* p){ 
         p += 1; 
         } 

功能定義1:

    void fun (*p){ 
         p += 1; 
          } 
+3

除了第一個是函數定義,第二個是亂碼? –

+0

'void fun(&p)'不是'void fun(int * p);'的定義。即使使用'int'。 – herohuyongtao

+7

這個問題似乎是脫離主題,因爲它是關於要求不存在的東西(精靈,獨角獸等) –

回答

1

通過指針傳遞一個int

void fun (int* p) ; 

void fun (int* p) 
{ 
    *p += 1 ; // Add 1 to the value pointed by p. 
} 

int由傳遞:

void fun (int& p) ; 

void fun (int& p) 
{ 
    p += 1 ; // Add 1 to p. 
} 
+0

int * p; p + = 1也有效;它只是指針算術 – tenfour

+0

@tenfour根據這個問題來判斷,我假設OP不知道指針算術是什麼。 – jliv902

+0

感謝您的好評我認爲我錯過了第二個定義中參數的返回類型。 –

2

這裏只有一個有效的函數定義,你給了一日一:

功能定義1:

void fun (int* p) { 
    p += 1; 
} 

你也可能是指:

(*p) += 1; 
+0

對不起,這個愚蠢的問題。我正在讀一篇文章,連續10個小時,最後我在函數調用中弄糊塗了函數定義。 –