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

C में नामित प्रारंभिकरण (Designated Initializers)

C90 मानक में हमें सरणियों को निश्चित क्रम में आरंभ करना पड़ता था, जैसे इंडेक्स 0, 1, 2 पर आरंभ करना आदि। C99 मानक से, उन्होंने C में नामित प्रारंभिकरण सुविधा पेश की। यहां हम तत्वों को यादृच्छिक क्रम में आरंभ कर सकते हैं। प्रारंभिकरण सरणी इंडेक्स या स्ट्रक्चर सदस्यों का उपयोग करके किया जा सकता है। यह एक्सटेंशन GNU C++ में लागू नहीं है।

यदि हम कुछ इंडेक्स निर्दिष्ट करते हैं और कुछ मान डालते हैं, तो यह इस तरह दिखेगा:

int arr[6] = {[3] = 20, [5] = 40}; या int arr[6] = {[3]20, [5]40};

यह इसके समतुल्य है:

int arr[6] = {0, 0, 0, 20, 0, 40};

हम इस सिंटैक्स का उपयोग करके तत्वों की एक श्रृंखला भी डाल सकते हैं: [first ... last] = value।

int arr[6] = {[2 ... 4] = 10};

यह इसके समतुल्य है:

int arr[6] = {0, 0, 10, 10, 10, 0};

यदि सरणी का आकार परिभाषित नहीं है, तो यह अधिकतम इंडेक्स स्थिति से आकार प्राप्त कर सकता है। बेहतर समझ के लिए कोड देखें।

उदाहरण कोड

#include <stdio.h>
int main() {
    int Array[] = {10, 20, 30, [3 ... 9] = 100, [10] = 65, 15, [80] = 50, [42] = 400};
    int i;
    for (i = 0; i < 20; i++)
        printf("%d ", Array[i]);
    printf("\nArray[%d] = %d\n", 80, Array[80]);
    printf("Array[%d] = %d\n", 42, Array[42]);
    printf("इस सरणी का आकार: %ld\n", sizeof(Array) / sizeof(Array[0]));
}

आउटपुट

10 20 30 100 100 100 100 100 100 100 65 15 0 0 0 0 0 0 0 0
Array[80] = 50
Array[42] = 400
इस सरणी का आकार: 81

यह नामित प्रारंभिकरण स्ट्रक्चर या यूनियन प्रकार के ऑब्जेक्ट्स के लिए भी किया जा सकता है। उनके लिए हम मेंबर वेरिएबल्स के नाम का उपयोग करके एक डॉट (.) के साथ किसी भी क्रम में वेरिएबल्स को आरंभ कर सकते हैं। स्पष्ट विचार प्राप्त करने के लिए नीचे दिए गए कोड की जांच करें।

उदाहरण कोड

#include <stdio.h>
struct myStruct {
    int x;
    float y;
    char z;
};
int main() {
    struct myStruct str1 = {.y = 2.324, .z = 'f', .x = 78};
    struct myStruct str2 = {.z = 'r'};
    printf("x = %d, y = %f, z = %c\n", str1.x, str1.y, str1.z);
    printf("z = %c\n", str2.z);
}

आउटपुट

x = 78, y = 2.324000, z = f
z = r
  1. - फंक्शन में पॉइंटर्स का उपयोग करके योग और अंतर ज्ञात करने के लिए C प्रोग्राम

    मान लीजिए हमारे पास दो संख्याएं a और b हैं। हमें एक फंक्शन परिभाषित करना है जो (a + b) और (a - b) दोनों की गणना कर सके। लेकिन C में एक फंक्शन का उपयोग करके, हम अधिकतम एक मान वापस कर सकते हैं। एक से अधिक आउटपुट ज्ञात करने के लिए, हम फंक्शन आर्गुमेंट में पॉइंटर्स का उपयोग करके आउटपुट पैरामीटर्स का उपय

  1. - C में नामित प्रारंभिकरण (Designated Initializers)

    C90 मानक में हमें सरणियों को निश्चित क्रम में आरंभ करना पड़ता था, जैसे इंडेक्स 0, 1, 2 पर आरंभ करना आदि। C99 मानक से, उन्होंने C में नामित प्रारंभिकरण सुविधा पेश की। यहां हम तत्वों को यादृच्छिक क्रम में आरंभ कर सकते हैं। प्रारंभिकरण सरणी इंडेक्स या स्ट्रक्चर सदस्यों का उपयोग करके किया जा सकता है। यह

  1. - C++17 में इनिशियलाइज़र के साथ Else और Switch स्टेटमेंट्स

    कई मामलों में, हमें किसी फ़ंक्शन द्वारा लौटाए गए मान को सत्यापित करने और इस मान के आधार पर सशर्त ऑपरेशन करने की आवश्यकता होती है। तो हमारा कोड नीचे दिया गया है -// कोई मेथड या फ़ंक्शन return_type foo(Params) // Params के साथ फ़ंक्शन कॉल करें और // var1 में रिटर्न स्टोर करें auto var1 = foo(Params);