2011-02-17 14 views
12

स्थिर प्रकार डेटा लौटने का संभावित प्रभाव क्या है। और हमें वास्तव में इसका उपयोग कब करना चाहिए?रिटर्न प्रकार का प्रभाव स्थिर

static ssize_t 
my_read(int fd, char *ptr) 
{ 
    //code from Stevens Unix Network programming. 
     if (something) 
     return (-1) 
     if (something else) 
      return (0) 


     return (1) 
} 

यहां स्थिर क्यों है?

धन्यवाद।

उत्तर

28

फ़ंक्शन स्थिर है, वापसी प्रकार नहीं। इसका मतलब है कि इसे केवल वर्तमान संकलन इकाई के भीतर से ही बुलाया जा सकता है।

+0

धन्यवाद मार्सेलो। – freedesk

+0

एक डेटा प्रकार लौटाते समय एक और पहलू है जो स्थैतिक है। – Algorithmist

+6

इसका मतलब है कि पहचानकर्ता को वर्तमान अनुवाद इकाई में स्कॉप्ड किया गया है, लेकिन फ़ंक्शन को अभी भी फ़ंक्शन पॉइंटर के माध्यम से कहीं और से कॉल किया जा सकता है। – caf

2

हम आपको स्वत: चर यानी किसी भी प्रकार के क्वालीफायर के बिना इसे नष्ट कर दिया जाना होगा, जब नियंत्रण रिटर्न के रूप में क्षेत्र बनाना होगा तो जब जैसे

float * calculate_area(float r) 
{ 
    float *p; 
    static float area; 
    p=&area; 
    area=3.14*r*r; 
    return p; 
} 

function.for कहा जाता है में बनाया एक चर के लिए सूचक लौटने स्थिर डेटा प्रकार का उपयोग करें फ़ंक्शन कहा जाता है। जब स्थिर के रूप में घोषित किया गया है तो आप मुख्य रूप से मुख्य से क्षेत्र के मूल्य को भी पुनर्प्राप्त कर सकते हैं। इस प्रकार यह इसके मूल्य को कायम रखने के लिए हम इसे स्थिर बनाते हैं।

+0

@freedesk क्या आप एक स्थिर डेटा या स्थिर कार्य लौटने के बारे में बात कर रहे हैं। मैंने सोचा था कि आप किसी फ़ंक्शन से स्थिर डेटा लौटने के बारे में बात कर रहे थे। – Algorithmist

+2

यह खराब अभ्यास है, यह निजी encapsulation तोड़ता है। थ्रेड-सुरक्षा मुद्दों, और मूल्यांकन के मुद्दों के क्रम के कारण सांख्यिकी के लिए रिटर्निंग पॉइंटर्स भी खतरनाक हैं। मूल्यांकन के अपरिभाषित आदेश के कारण, आप नहीं जानते कि क्या होगा यदि आप इस फ़ंक्शन को उदाहरण के लिए printf ("% f% f", * गणनाate (1.0f), * गणनाate (2.0f)) कहते हैं; – Lundin

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