क्या यह सच है, कि एस्टेरिस्क का हमेशा अर्थ है "अरे, यह एक सूचक है!" और एक सूचक हमेशा मेमोरी एड्रेस रखता है?उद्देश्य-सी में एस्टेरिक * का क्या अर्थ है?
NSString* myString;
या
SomeClass* thatClass;
या
(*somePointerToAStruct).myStructComponent = 5;
:
उदाहरण के लिए (हाँ मैं अपवाद है कि एक * गणित ऑपरेशन के लिए प्रयोग किया जाता है के लिए जानते हैं) मुझे लगता है कि मैं और भी हूं Asterirsk (*) के बारे में जानने की आवश्यकता है, इससे पहले कि मैं एक वर्ग के सूचक के रूप में एक वैरिएबल को परिभाषित करते समय इसका उपयोग करता हूं।
क्योंकि कभी-कभी मैं पहले से ही पैरामीटर की घोषणा में कहता हूं कि पैरामीटर चरक एक सूचक है, और फिर भी मुझे मूल्य तक पहुंचने के लिए वेरिएबल के सामने तारांकन का उपयोग करना होगा। हाल ही में ऐसा हुआ जब मैं एक तरीके से एक विधि के एक पॉइंटर को पास करना चाहता था जैसे कि [myObj myMethod: & myStruct], मैं उस संरचना से घटक मान तक नहीं पहुंच सका, भले ही मेरी विधि घोषणा पहले से ही कहा गया है कि एक पैरामीटर है (डेमोस्ट्रक्चर *) myVar जो वास्तव में उस demostruct के लिए पहले से ही एक सूचक के रूप में जाना जाना चाहिए, अभी भी मैं हमेशा कहना था: "मैन, कंपाइलर। सुनो! यह IIISSS एक सूचक है:" और लिखें: (* myVar) .myStructComponentX = 5;
मैं वास्तव में वास्तव में समझ में नहीं आता कि मुझे दो बार क्यों कहना है। और केवल इस मामले में।
जब मैं एनएसएसटींग * myString के संदर्भ में एस्टेरिस्क का उपयोग करता हूं तो मैं केवल अपने स्ट्रिंग तक पहुंच सकता हूं, हालांकि मुझे यह पसंद है कि प्रत्येक बार यह एक सूचक है। यानी * myString = @ "yep" का उपयोग करना पसंद है।
यह मुझे कोई समझ नहीं आता है।
यह है वास्तव में यह के रूप में एक सी सवाल नहीं के लिए विशिष्ट है उद्देश्य-सी :) –
http://stackoverflow.com/questions/581657/why-do-i-have-to-write-mypointervar-only-s times-in-objective-c – philant
का डुप्लिकेट उद्देश्य- सी स्ट्रिंग ऑब्जेक्ट के लिए नोटेशन @ "..." है। कोको में, ऐसी स्ट्रिंग ऑब्जेक्ट्स की कक्षा एनएसएसटींग है। – mouviciel