मैं एक नई पूर्णांक सरणी बनाने की कोशिश कर रहा हूं जो वर्णों की एक स्ट्रिंग से ली गई है। उदाहरण के लिए:फ़ंक्शन से लौटने वाली Arrays/पॉइंटर्स
char x[] = "12334 23845 32084";
int y[] = { 12334, 23845, 32084 };
मैं कैसे समझ एक समारोह से एक सरणी (जो मुझे समझ में संभव नहीं है) वापस जाने के लिए परेशानी हो रही हूँ।
मैं मूल रूप से करने की कोशिश की:
/* Convert string of integers into int array. */
int * splitString(char string[], int n)
{
int newArray[n];
// CODE
return (newArray);
}
int main(void)
{
int x[n] = splitString(string, n);
return (0);
}
मैं बाद में पता चला कि यदि आप ऐसा नहीं कर सकते हैं।
पॉइंटर्स फ़ंक्शंस के संबंध में कैसे काम करते हैं?
धन्यवाद।
यह पसंदीदा तरीका है। 99% मामलों में किसी फ़ंक्शन से किसी भी प्रकार के पॉइंटर को वापस करने का अर्थ नहीं होता है। – Lundin
दाएं। जैसा कि अन्य उत्तरों में बताया गया है, आप स्मृति में आवंटित करने और उस सूचक को वापस करने के लिए फ़ंक्शन में 'malloc (n * sizeof (int)) का उपयोग कर सकते हैं, लेकिन फिर आपको हमेशा स्मृति को' मुक्त 'भी याद रखना होगा। चूंकि 'malloc' किसी फ़ंक्शन में अबास्ट्रक्शन के एक अलग स्तर पर छिपा हुआ है, इसलिए आप भूलने के लिए प्रवण हैं। तो स्मृति को आवंटित करना और पॉइंटर को फ़ंक्शन में पास करना सबसे अच्छा है, परिणाम का उपयोग करें, और उसके बाद मेमोरी को मुक्त करें ताकि आप आसानी से अपने 'मॉलोक' को अपने 'फ्री' से मेल कर सकें। – JCooper
@JCooper: कॉलर उस मेमोरी को पूल से, स्टैक से बाहर या कहीं भी उसे कहीं भी रखना चाहता है, लेकिन फ़ंक्शन नहीं कर सकता है। – Puppy