Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में char s[] और char *s का अंतर


C में स्ट्रिंग्स को दो तरीकों से घोषित किया जा सकता है: char s[] (ऐरे) और char *s (पॉइंटर)। इनमें महत्वपूर्ण अंतर हैं।

मुख्य अंतर

विशेषताchar s[] (ऐरे)char *s (पॉइंटर)
स्टोरेजस्टैक पर पूरा स्ट्रिंगस्टैक पर पॉइंटर, स्ट्रिंग रीड-ओनली मेमोरी (कोड सेक्शन) में
sizeofस्ट्रिंग लंबाई + 1 (नल टर्मिनेटर)पॉइंटर का आकार (4 या 8 बाइट्स)
संशोधनअनुमतअनुमत नहीं (अनडिफाइंड बिहेवियर/सेगफॉल्ट)
पुनः असाइनमेंटनहींहाँ

उदाहरण 1: ऐरे (संशोधन योग्य)

#include <stdio.h>

int main() {
    char s[] = "Hello World";
    s[6] = 'x';  // स्थिति 6 पर 'W' को 'x' में बदलें
    printf("%s\n", s);  // Hello xorld
    return 0;
}

आउटपुट

Hello xorld

उदाहरण 2: पॉइंटर (रीड-ओनली)

#include <stdio.h>

int main() {
    char *s = "Hello World";
    s[6] = 'x';  // सेगमेंटेशन फॉल्ट!
    printf("%s\n", s);
    return 0;
}

आउटपुट

Segmentation Fault

व्याख्या

  • char s[]: कंपाइलर स्टैक पर ऐरे के लिए जगह अलोकेट करता है और स्ट्रिंग लिटरल की कॉपी करता है।
  • char *s: पॉइंटर स्ट्रिंग लिटरल को इंगित करता है जो रीड-ओनली मेमोरी (आमतौर पर .rodata सेक्शन) में संग्रहीत होता है।
  • स्ट्रिंग लिटरल को संशोधित करना अनडिफाइंड बिहेवियर है।

सही उपयोग

// पॉइंटर के साथ कॉन्स्ट क्वालिफायर (सर्वोत्तम अभ्यास)
const char *s = "Hello World";  // कंपाइलर चेतावनी देगा यदि संशोधन का प्रयास किया जाए
  1. - C# और Visual C# में अंतर

    C# और Visual C# दोनों Same हैं। जब आप C# Development के लिए Visual Studio का उपयोग करते हैं, तो इसे Visual C# कहा जाता है। Visual C# को C# का Implementation Consider करें। Microsoft Visual Studio, Programs, Web Apps, Web Services आदि Develop करने के लिए Microsoft का एक IDE है। Visual Studio का Curre

  1. - C# और .Net में अंतर

    C# एक Programming Language है और .NET एक Framework है। .NET में Common Language Runtime (CLR) होता है, जो .NET Framework का एक Virtual Component है। .NET में न केवल C#, बल्कि इसके माध्यम से आप VB, F# आदि के साथ काम कर सकते हैं। C# .NET का हिस्सा है और इसमें निम्न Features हैं: Boolean Conditions Au

  1. - Go और Java में अंतर

    GoGo एक प्रक्रियात्मक प्रोग्रामिंग भाषा है। प्रोग्राम पैकेज का उपयोग करके असेंबल किए जाते हैं। यह डायनामिक भाषाओं के समान पैटर्न को अपनाने वाले वातावरण का समर्थन करता है।JavaJava एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है। Java काफी तेज, विश्वसनीय और सुरक्षित है। यह सबसे व्यापक रूप से उपयोग की जाने व