पॉइंटर-आधारित और ऐरे-आधारित स्ट्रिंग आरंभीकरण के लिए स्ट्रिंग की लंबाई और आकार की गणना में विशिष्ट आउटपुट
परिणामों को समझना
एक ही मान के साथ एक पॉइंटर-आधारित स्ट्रिंग str1 और एक सरणी-आधारित स्ट्रिंग str2 बनाते समय, फ़ंक्शन strlen और sizeof अलग-अलग परिणाम उत्पन्न करते हैं। विशेष रूप से, घोषणाओं के लिए:
char *str1 = "Sanjeev";
char str2[] = "Sanjeev";
strlen str1 और str2 दोनों के लिए 7 लौटाता है क्योंकि यह अंत में नल-टर्मिनेटर (\0) को छोड़कर, वर्ण अनुक्रम की लंबाई को मापता है।
हालाँकि, sizeof अलग-अलग मान उत्पन्न करता है:
अंतर्निहित अंतर: डेटा प्रकार बनाम मेमोरी आवंटन
sizeof डेटा प्रकार के आकार को मापता है, जबकि स्ट्रेलन वर्ण अनुक्रम की लंबाई को मापता है। str1 के मामले में, यह एक char का सूचक है, इसलिए sizeof सूचक का आकार लौटाता है। str2 के लिए, यह वर्णों की एक सरणी है, इसलिए sizeof नल-टर्मिनेटर सहित संपूर्ण सरणी का आकार लौटाता है।
एक नज़दीकी नज़र
प्रदर्शित करने के लिए भेद बेहतर, विचार करें:
char str2[8];
strncpy(str2, "Sanjeev", 7);
char *str1 = str2;
अब, str1 और str2 दोनों एक ही सरणी की ओर इशारा करते हैं। उनके स्ट्रलेन मान 7 हैं, लेकिन उनके आकार के मान भिन्न हैं:
यह उदाहरण देता है कि आकार का मूल्यांकन अंतर्निहित डेटा संरचना पर कैसे निर्भर करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3