2014-08-29 169 views
-3

我是自學指針,想知道傳遞地址的正確方法是什麼?從int *到int的轉換無效

int main(){ 
     int kevin = 10,tiu,gana; 

     int *kevinpointer; 
     kevinpointer = &kevin; 

     tiu = kevin; 
     gana = &tiu; 

     cout << "The value of Kevin is: "; 
     cout << kevin << endl; 

     cout << "The address of Kevin is: "; 
     cout << kevinpointer << endl; 

     cout << "The address of KevinPointer is: "; 
     cout << *kevinpointer << endl; 

     cout << "The value/address of tiu is: "; 
     cout << tiu << endl; 

     cout<< "The address of gana is: "; 
     cout << gana << endl; 

    } 

我得到一個錯誤的 「加納= &tiu;」> INT *的轉換無效爲int [F-許可。

+1

在你的代碼片段中,'gana'是一個'int',而不是指向'int'的指針,因此你不能在不觸發警告的情況下爲它分配一個地址'&tiu'。 – 2014-08-29 14:55:32

+0

感謝您的迴應!非常感激。 – 2014-08-29 14:56:30

回答

1

您定義的變量gana具有類型int

int kevin = 10,tiu,gana; 

,但你想int *類型的對象賦給它

gana = &tiu; 

如果您想將變量定義爲有型int *

int kevin = 10,tiu, *gana; 

then this statement

gana = &tiu; 

會是正確的。

要考慮到這些語句

cout << "The address of KevinPointer is: "; 
cout << *kevinpointer << endl; 

//... 

cout<< "The address of gana is: "; 
cout << gana << endl; 

是錯誤的。應該有

cout << "The address of KevinPointer is: "; 
cout << &kevinpointer << endl; 

//... 

cout<< "The address of gana is: "; 
cout << &gana << endl; 
+0

感謝您的幫助! :D – 2014-08-29 14:57:45

0

ganaint,而你試圖使用它作爲一個int*。將前兩行改爲:

int kevin = 10, tiu; 
int *kevinpointer, *gana; 

程序應該編譯。然而,你有這個片段:

cout<< "The address of gana is: "; 
cout << gana << endl; 

這沒有任何意義。變量gana不能保存自己的地址。這將要求它同時是int*int**,這沒有任何意義。此代碼應該是:

cout << "The address of tiu is: " << gana << endl; 
+0

感謝您的回覆! :) – 2014-08-29 14:58:05

+0

@Josh:哦,真的嗎?和'cout <<「gana的地址是:」<< gana;'會打印出'gana'的地址? – 2014-08-29 14:58:41

+0

@PiotrS。通過*一切應該工作*我的意思是編譯和運行。雖然好,但我會編輯我的答案。 – scohe001 2014-08-29 14:59:38

0

指針整數。它們不兼容。

爲了強制從指針獲取整數,請使用顯式轉換。

gana = (int)&tiu; 

此外,標準不說sizeof(int) == sizeof(void *)。如果要使用大小等於指針的整數類型,則應使用intptr_tuintptr_t,它位於<stdint.h>中。

+0

你絕對不應該使用C風格的演員。 – 2014-08-29 15:31:10

+0

@ChristianHackl那麼,從OP的代碼判斷,他可能實際上想要使用C> o < – ikh 2014-08-29 23:23:48

+0

這個問題被標記爲C++。 – 2014-08-30 07:34:00