2009-04-29 12 views

उत्तर

36

NSLog के लिए तर्क एक NSString हो सकता है, जरूरत है तो आप चाहते हैं

NSLog(@"%p", &myIntVar); 
+1

बेहतर अभी तक, हम @ "% p"। % x एक पूर्णांक मान को हेक्साडेसिमल के रूप में स्वरूपित करता है, जबकि% p विशेष रूप से पॉइंटर्स के लिए होता है, और इसके अतिरिक्त हेक्साडेसिमल प्रतिनिधित्व को मुद्रित करता है। –

+0

अच्छा बिंदु! मैंने तदनुसार जवाब अपडेट किया है :) – smorgan

4

प्रयास करें:

NSLog(@"%p", &myIntVar); 

या

NSLog(@"%lx", (long)&myIntVar); 

पहले संस्करण सूचक विशेष प्रिंट का उपयोग करता है प्रारूप, जो मानता है कि पारित पैरामीटर एक सूचक है, लेकिन आंतरिक रूप से इसे लंबे समय तक मानता है।

दूसरा संस्करण पता लेता है, फिर इसे एक लंबे पूर्णांक तक रखता है। 64-बिट प्लेटफार्मों पर पोर्टेबिलिटी के लिए यह आवश्यक है, क्योंकि "l" प्रारूप क्वालीफायर के बिना यह माना जाएगा कि आपूर्ति मूल्य एक पूर्णांक है, आमतौर पर केवल 32-बिट लंबा होता है।

+1

मैं दूसरे संस्करण के खिलाफ अनुशंसा करता हूं, आपको कुछ भी हासिल नहीं होता है। % p पहले से ही 32 या 64 बिट प्लेटफार्मों पर अपेक्षित काम करता है। –

+0

ऐप्पल विशेष रूप से बाद की विधि का उल्लेख करता है: http://developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1 – Alnitak

0

एनएसएलओएल (@ "% x", & myIntVar); % x लंबे int के लिए है या आप Nslog (@ "% p", & myIntVar) जैसे प्रिंट कर सकते हैं; % p सूचक के लिए है

संबंधित मुद्दे