2015-08-31 53 views
0

我嘗試打印地址的值,併產生錯誤。如何在C中打印一個變量的地址?

int main() 
{ 
    int arr[] = {10,20,30,40,50,60}; 
    int *ip; 
    ip=&arr[3]; 
    printf("%u",ip); 

    return 0; 
} 
+1

你得到的錯誤是什麼? – lenz

+1

另外,我不確定這與Ubuntu有什麼關係......考慮重新標記您的帖子以獲得適當的觀衆。 – lenz

+1

@lenz stack.c:9:1:warning:格式'%d'需要'int'類型的參數,但參數2的類型爲'int *'[-Wformat =] printf(「%d」,ip) ; –

回答

6

如所指出的指針的值是對象它所指向的地址。您打印使用:

printf("%p",(void*) ip); 

如果你有興趣在值對象的指針指向 - 你需要取消對它的引用,然後在這種情況下%d格式說明使用方法:

printf("%d",*ip); 
+2

@jpw:這是錯字。我猜是需要強制轉換,因爲%p期望void類型的指針。 –

+2

@jpw:是%p格式需要一個類型爲void *的參數。看到這個http://stackoverflow.com/questions/5286451/how-to-print-variable-addresses-in-c&http://stackoverflow.com/questions/20374880/print-the-memory-location-of-一個可變 - 或指針。 – Destructor