2016-02-18 94 views
1

我是新學習C和學習指針現在,我從本網站學習,但此代碼給我一個錯誤:pointer.c:在函數'main'中: pointer.c :6:5:warning:格式'%d'需要類型'int'的參數,但參數2的類型爲'int *'[-Wformat =] printf(「Address:%d」,& var); //注意,var之前的&符號(&)。示例指針在C不工作

我編譯:gcc的-o指針pointer.c

/* Example to demonstrate use of reference operator in C programming. */ 
#include <stdio.h> 
int main(){ 
int var = 5; 
printf("Value: %d\n",var); 
printf("Address: %d",&var); //Notice, the ampersand(&) before var. 
return 0; 
} 

http://www.programiz.com/c-programming/c-pointers

+1

使用%p打印指針值。 –

+0

不相關,但你應該縮進你的代碼。 –

+0

是的它的工作。 :)謝謝, –

回答

2

你試圖打印的var地址,如果它是一個符號整數它不是」噸。它是一個指針,可能與整數不同。

將不匹配類型的值傳遞給printf()會調用未定義的行爲,這就是編譯器發出友好警告的原因。

您應該使用%p進行格式化,並投價值(void *)符合C標準:

printf("Address: %p\n", (void *) &var); 
+0

謝謝,:)其工作 –

1

這是更好,如果你使用%p來打印指針。從規範:

p參數應該是一個指向void的指針。指針的值是 轉換爲打印字符序列,採用 實現定義的方式。

不要忘了投:​​

+0

謝謝。 :)其工作 –