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

C में स्ट्रक्चर वेरिएबल्स पर ऑपरेशन्स

स्ट्रक्चर वेरिएबल्स पर अनुमत ऑपरेशन्स

यहां हम देखेंगे कि स्ट्रक्चर वेरिएबल्स पर किस प्रकार के ऑपरेशन्स किए जा सकते हैं। मूल रूप से स्ट्रक्चर के लिए केवल एक ऑपरेशन किया जा सकता है: **असाइनमेंट ऑपरेशन**। इक्वलिटी चेक या अन्य जैसे कुछ अन्य ऑपरेशन्स स्ट्रक्चर के लिए उपलब्ध नहीं हैं।

उदाहरण: वैध असाइनमेंट

#include <stdio.h>

typedef struct {
    int real, imag;
} complex;

void displayComplex(complex c) {
    printf("(%d + %di)\n", c.real, c.imag);
}

int main() {
    complex c1 = {5, 2};
    complex c2 = {8, 6};
    
    printf("Complex numbers are:\n");
    displayComplex(c1);
    displayComplex(c2);
    
    // असाइनमेंट काम करता है
    complex c3 = c1;  // मेंबर-वाइज कॉपी
    c3.real = 10;
    
    return 0;
}

आउटपुट

Complex numbers are:
(5 + 2i)
(8 + 6i)

काम नहीं करने वाले ऑपरेशन्स

इक्वलिटी तुलना (==) - काम नहीं करता

#include <stdio.h>

typedef struct {
    int real, imag;
} complex;

int main() {
    complex c1 = {5, 2};
    complex c2 = c1;
    
    // त्रुटि: स्ट्रक्चर्स के लिए == ऑपरेटर परिभाषित नहीं है
    if (c1 == c2) {
        printf("Complex numbers are same.\n");
    } else {
        printf("Complex numbers are not same.\n");
    }
    
    return 0;
}

आउटपुट

[Error] invalid operands to binary == (have 'complex' and 'complex')

समाधान: कस्टम तुलना फ़ंक्शन

#include <stdio.h>
#include <stdbool.h>

typedef struct {
    int real, imag;
} complex;

// कस्टम तुलना फ़ंक्शन
bool complex_equal(complex a, complex b) {
    return a.real == b.real && a.imag == b.imag;
}

int main() {
    complex c1 = {5, 2};
    complex c2 = {5, 2};
    complex c3 = {8, 6};
    
    if (complex_equal(c1, c2))
        printf("c1 और c2 समान हैं\n");
    else
        printf("c1 और c2 समान नहीं हैं\n");
    
    if (complex_equal(c1, c3))
        printf("c1 और c3 समान हैं\n");
    else
        printf("c1 और c3 समान नहीं हैं\n");
    
    return 0;
}

स्ट्रक्चर ऑपरेशन्स सारांश

ऑपरेशनसमर्थित?नोट्स
असाइनमेंट (=)हांमेंबर-वाइज कॉपी
एड्रेस लेना (&)हांपॉइंटर देता है
साइज़ओफ़ (sizeof)हांस्ट्रक्चर का आकार (पैडिंग सहित)
== / != तुलनानहींकस्टम फ़ंक्शन लिखना होगा
अंकगणित (+, -, *, /)नहींऑपरेटर ओवरलोडिंग C में नहीं
फंक्शन आर्गुमेंट के रूप में पास करनाहांवैल्यू द्वारा (कॉपी) या पॉइंटर द्वारा
फंक्शन से वापस करनाहांवैल्यू द्वारा (कॉपी)

C++ में: ऑपरेटर ओवरलोडिंग

C++ में, आप स्ट्रक्चर्स/क्लासेस के लिए ऑपरेटर्स ओवरलोड कर सकते हैं:

struct Complex {
    int real, imag;
    
    bool operator==(const Complex& other) const {
        return real == other.real && imag == other.imag;
    }
    
    Complex operator+(const Complex& other) const {
        return {real + other.real, imag + other.imag};
    }
};
  1. - C# में UInt16 स्ट्रक्चर

    UInt16 स्ट्रक्चर 16-बिट अनसाइन्ड इंटीजर को दर्शाता है। UInt16 वैल्यू टाइप 0 से 65535 तक मानों वाले अनसाइन्ड इंटीजर्स को दर्शाता है।आइए अब UInt16 स्ट्रक्चर के कुछ मेथड्स के उदाहरण देखते हैं:UInt16.CompareTo()C# में UInt16.CompareTo() मेथड का उपयोग वर्तमान इंस्टेंस की तुलना किसी निर्दिष्ट ऑब्जेक्ट या

  1. - C# में डेटाबेस ऑपरेशन्स: कनेक्ट, SELECT, INSERT, UPDATE, DELETE

    C# में डेटाबेस ऑपरेशन्स के लिए ADO.NET (कनेक्टेड/डिस्कनेक्टेड आर्किटेक्चर) या Entity Framework Core (ORM) का उपयोग किया जाता है। सामान्य चरण: 1. कनेक्शन (Connect) कनेक्शन स्ट्रिंग में डेटा स्रोत, डेटाबेस नाम, क्रेडेंशियल्स शामिल होते हैं। private static string connectionString = Server=.;Data

  1. - C# में कॉम्प्लेक्स नंबर्स (Complex Numbers): स्ट्रक्चर और ऑपरेटर ओवरलोडिंग

    कॉम्प्लेक्स नंबर: a + bi जहां a वास्तविक भाग, b काल्पनिक भाग, i = √-1। C# में System.Numerics.Complex स्ट्रक्चर बिल्ट-इन है (`.NET Framework 4.0+`, `.NET Core`), लेकिन कस्टम स्ट्रक्चर भी बना सकते हैं। कस्टम Complex स्ट्रक्चर उदाहरण using System; public struct Complex { public int Real; pu