2012-04-08 8 views
6

हाल ही में मैं इस वीडियो में Programming Paradigms और प्रोफेसर पर आया था। एस्टरिस्क, स्टार और एम्परसैंड जैसे इस्तेमाल किए गए शब्द।सी ++: तारांकन, एम्परसैंड और स्टार?

यह वही है कि कैसे वह उन ऑपरेटरों का उपयोग किया गया था:

int i = 37; 
float f = *(float*)&i; 

और कैसे वह लाइन 2 आवाज उठाई, जबकि यह लिख:

फ्लोट "f" मैं की तारांकन नाव स्टार के बराबर होती है, एम्परसेंड

मैं समझता हूं कि तारांकन और एम्परसंद का मतलब क्या है, लेकिन यहां स्टार का उपयोग करने का महत्व क्या है? क्या यह तारांकन का पर्याय बन गया है?

+5

वह कोष्ठक का उल्लेख करना भूल गया। –

+5

... और अर्धविराम। – Blastfurnace

+0

मुझे आश्चर्य है, अगर आप कुछ भी कहते हैं, तो बस यह न कहें कि इसके बजाय क्या होता है ... – Bart

उत्तर

8

float के बाद एक प्रकार का निर्माण करने के लिए उपयोग किया जाता है। अक्सर शब्दों में पॉइंटर प्रकार का जिक्र करते समय लोग "पॉइंटर" के बजाय "स्टार" कहेंगे, उदाहरण के लिए। "मॉलोक एक शून्य सितारा देता है"। मैंने किसी भी प्रकार को संदर्भित करने के लिए कभी भी "तारांकन" का उपयोग नहीं किया है।

* शुरू में डी-संदर्भ के लिए सूचक जिससे मूल्य यह की ओर इशारा तक पहुँचने प्रयोग किया जाता है (निम्नलिखित कलाकारों की वजह से एक float के रूप में व्याख्या)। दोबारा, अपने अनुभव में मैंने कभी भी किसी को "तारांकन" का उपयोग नहीं किया है। लोग प्रदर्शन किए जाने वाले ऑपरेशन का वर्णन करने के लिए बस "डी-रेफरेंस" कहते हैं।

मैं इसमें बहुत कुछ नहीं पढ़ूंगा।यहां दो अलग-अलग संदर्भ हैं जैसे आपने सही तरीके से देखा है और जब तक आप समझते हैं कि सी ++ बिंदु दृश्य से उनका क्या मतलब है, तो यह ठीक है।

+0

धन्यवाद! यह प्रभावी ढंग से जवाब देता है कि प्रोफेसर ने "तारांकन" के बजाय "स्टार" क्यों कहा। – witherspoon

0

मुझे लगता है कि प्रस्तुतकर्ता सिर्फ कोड लिखने के दौरान एक अजीब चुप्पी से बचना चाहता था। जहां तक ​​मुझे पता है, इस संदर्भ में तारांकन और स्टार के बीच कोई अंतर नहीं है।

2
float f = *(float*)&i; 

इस मामले को छोड़ दिया * में और सही * अलग sematics है। बाएं * का मतलब है कि मूल्य पुनर्नवीनीकरण से हो रहा है। सही * संदर्भ प्रकार घोषित करता है।

+0

"अलग-अलग अर्थशास्त्र हैं" उच्चारण के लिए अपरिवर्तित - यह अभी भी वही प्रतीक है। – SigTerm

+0

हां, ज़ाहिर है) –

1

क्या यह तारांकन का पर्याय बन गया है?

हां। पर Shift + 8 MY विंडोज कीबोर्ड। आपका उदाहरण दर्शाता है कि आपको प्रतीक द्वारा सी ++ प्रोग्राम जोर से प्रतीक को पढ़ने का प्रयास क्यों नहीं करना चाहिए। सी ++ में "बराबर" "==" है। "=" असाइनमेंट है। इसके अलावा वह कोष्ठक और अर्धविराम के बारे में बताना भूल गया। इस बिंदु पर (कोड की एक पंक्ति में 4 गलतियों) वह चुपचाप चुपचाप लिखा होगा।

यह बहुत बेहतर होता अगर दोस्त इस भाग पढ़ें:

float f = *(float*)&i; 
इस तरह

कुछ हद तक:

"मैं करने के लिए सूचक ले लो, सी-शैली यह सूचक में डाला फ्लोट करने के लिए, भिन्नता , और परिवर्तनीय एफ " फ्लोट करने के लिए मान असाइन करें। अधिक समझ में आता है कि "स्टार/तारांकन" अस्पष्टता।

पीएस यदि आप वास्तव में जीभ twisters प्यार करते हैं, तो आप बूस्ट, iostreams, ऑपरेटर < <, वर्ग, bitwise संचालन और "ऊंट मामले" वर्गों और तरीकों के बीच अंतर करने के लिए किसी भी कोड जोर से पढ़ने की कोशिश कर सकते हैं। इस तरह का अभ्यास आपके प्रोग्रामिंग कौशल में सुधार नहीं करेगा, बेशक ...

+2

शिफ्ट +8 "(" मेरे कीबोर्ड पर (विंडोज़ भी है!)। आपको यह नहीं मानना ​​चाहिए कि सभी कीबोर्डों में दुनिया भर में एक ही लेआउट है –

+3

-1: ओपी जानता है कि यह वही प्रतीक है मुझे लगता है कि यह बहुत कठोर है। प्रश्न यह पूछ रहा है कि दो अलग-अलग संदर्भों के उपयोग के लिए दो अलग-अलग शर्तों के उपयोग के लिए महत्व था या नहीं। – Troubadour

+0

@ ट्राउबाडोर: "मुझे लगता है कि यह बहुत कठोर है" मैं नहीं करता यह नहीं लगता कि यह बहुत कठोर है, और यह अशिष्ट होने का इरादा नहीं था। इसलिए यदि आप * सोचते हैं कि यह अशिष्ट है क्योंकि आप निष्कर्ष पर कूद रहे हैं। "दो अलग-अलग शर्तों के उपयोग के लिए महत्व" वहां नहीं जहां तक ​​मुझे पता है कि "स्टार" और "तारांकन" कुछ प्रसिद्ध सी ++ शब्दकोष का हिस्सा नहीं हैं और आमतौर पर "derefernece" या "cast" का संदर्भ नहीं लेते हैं। अंतर करने के लिए इसका उपयोग करना समझ में आता है बेहतर शब्द - "derefernece" और "कास्ट"। – SigTerm