हमने देखा है कि कभी-कभी तार चार एस [], या कभी-कभी चार * एस का उपयोग करके बनाए जाते हैं। तो यहाँ हम देखेंगे कि क्या कोई अंतर है या वे समान हैं?
कुछ मतभेद हैं। s[] एक सरणी है, लेकिन *s एक सूचक है। उदाहरण के लिए, यदि दो घोषणाएं क्रमशः चार एस [20], और चार * एस की तरह हैं, तो आकार() का उपयोग करके हमें 20 और 4 मिलेंगे। पहला 20 होगा क्योंकि यह दिखा रहा है कि 20 बाइट्स हैं आंकड़े का। लेकिन दूसरा केवल 4 दिखा रहा है क्योंकि यह एक सूचक चर का आकार है। सरणी के लिए, कुल स्ट्रिंग को स्टैक अनुभाग में संग्रहीत किया जाता है, लेकिन सूचक के लिए, सूचक चर को स्टैक अनुभाग में संग्रहीत किया जाता है, और सामग्री को कोड अनुभाग में संग्रहीत किया जाता है। और सबसे महत्वपूर्ण अंतर यह है कि, हम पॉइंटर टाइप स्ट्रिंग को संपादित नहीं कर सकते हैं। तो यह केवल पढ़ने के लिए है। लेकिन हम स्ट्रिंग के सरणी प्रतिनिधित्व को संपादित कर सकते हैं।
उदाहरण
#include<stdio.h> main() { char s[] = "Hello World"; s[6] = 'x'; //try to edit letter at position 6 printf("%s", s); }
आउटपुट
Hello xorld Here edit is successful. Now let us check for the pointer type string.
उदाहरण
#include<stdio.h> main() { char *s = "Hello World"; s[6] = 'x'; //try to edit letter at position 6 printf("%s", s); }
आउटपुट
Segmentation Fault