2014-03-29 43 views
0

我正在用C編寫一個程序,我是一個完整的初學者,可以找到素數。我的問題是,當我初始化一個變量,像這樣int類型...C中的滑稽類型錯誤

int num; 

,然後事情發生

blah blah blah 

但沒有任何反應爲num,它保留在儲備,只用於修改其他變量。

,然後當我嘗試

printf("%d",&num); 

,並用gcc編譯它,它給了我這個錯誤

warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat] 

,但它似乎真的很傻,什麼intint *之間的區別?如果不是num,如何打印num? 請大家幫忙我好睏惑。

回答

0

首先,這只是一個警告(一個好的,但你仍然可以運行程序)。
如果你這樣做,你會看到一些奇怪的數字,
因爲你打印你的變量的內存地址。
取出&打印值(和擺脫警告過)

You're可能在想scanf函數,有你需要的&
(在這一點上的解釋是太長,等到你熟悉指針)

+0

謝謝,我想我想的是scanf – user3423925

2

&取地址爲num。使用

printf("%d\n",num); 
+0

工作很好,歡呼聲 – user3423925

0

只是外推一點點...... int和int之間的區別* int *是指向int的指針。這意味着它實際上並不包含一個int值,它將地址保存爲一個int值。