c++ - फ़ंक्शन से मैं एक चार सरणी कैसे वापस करूँ?



arrays function (4)

संभव डुप्लिकेट:
फ़ंक्शन में c ++ रिटर्न सरणी

मैंने निम्नलिखित की कोशिश की है:

char[10] testfunc()
{
    char[10] str;

    return str;
}

https://ffff65535.com


जैसा कि आप C ++ का प्रयोग कर रहे हैं आप std::string उपयोग कर सकते हैं।


तुम्हें यह एहसास करना होगा कि char[10] char* समान हैं आप वास्तव में एक संकेतक लौट रहे हैं अब सूचक एक चर ( str ) को इंगित करता है जो फ़ंक्शन से बाहर निकलते ही नष्ट हो जाता है, इसलिए पॉइंटर अंक ... कुछ नहीं!

आम तौर पर सी में, आप इस मामले में स्पष्ट रूप से स्मृति आवंटित करते हैं, जो समारोह समाप्त होने पर नष्ट नहीं किया जाएगा:

char* testfunc()
{
    char* str = malloc(10 * sizeof(char));
    return str;
}

हालांकि ध्यान रखें! स्मृति द्वारा str गयी स्मृति अब कभी नष्ट नहीं हुई है। यह एक 'मेमोरी लीक' के रूप में जाना जाता है आपके द्वारा इसके साथ किया जाने के बाद स्मृति free() को free() करना सुनिश्चित करें:

foo = testfunc();
// do something with your foo
free(foo); 

सर्वश्रेष्ठ पैरामीटर के रूप में:

void testfunc(char* outStr){
  char str[10];
  for(int i=0; i < 10; ++i){
    outStr[i] = str[i];
  }
}

के साथ बुलाया

int main(){
  char myStr[10];
  testfunc(myStr);
  // myStr is now filled
}

एक चार सरणी को चार * द्वारा लौटा दिया जाता है, लेकिन आपने जो फ़ंक्शन लिखा है वह काम नहीं करता क्योंकि आप एक स्वचालित चर लौटा रहे हैं जो फ़ंक्शन से बाहर निकलते समय गायब हो जाते हैं। इस तरह से कुछ का उपयोग करें:

char *testfunc() {
    char* arr = malloc(100);
    strcpy(arr,"xxxx");
    return arr;
}

यदि आप सी अर्थ में एक सरणी लौट रहे हैं तो यह निश्चित रूप से नहीं, एक एसटीडी :: या बढ़ावा :: या कुछ और जैसा कि टिप्पणी अनुभाग में बताया गया है: कॉलर से मुक्त आवाज़ को याद रखना।





return