কম্পিউটার টিউটোরিয়াল

সি ভাষায় স্ট্রাকচারের পৃথক মেম্বার ফাংশন আর্গুমেন্ট হিসেবে পাস করা

স্ট্রাকচারের পৃথক মেম্বার পাস করা (Call by Value)

স্ট্রাকচারের প্রতিটি মেম্বার আলাদা আলাদা ভ্যালু হিসেবে ফাংশনে পাস করা হয়। ফাংশন হেডারে সেগুলো সাধারণ ভেরিয়েবল হিসেবে রিসিভ করা হয়।

বিশেষত্ব

  • প্রতিটি মেম্বার আলাদা আর্গুমেন্ট।
  • ফাংশন আসল স্ট্রাকচার মডিফাই করতে পারে না (কপি পাস হয়)।
  • ছোট স্ট্রাকচার বা কিছু মেম্বার পাস করার জন্য উপযুক্ত।

উদাহরণ প্রোগ্রাম: ছাত্রের মার্কস যোগফল

#include <stdio.h>

struct student {
    int s1, s2, s3;
} s[5];

void addition(int a, int b, int c) {
    int sum = a + b + c;
    printf("Total marks = %d\n", sum);
}

int main() {
    int i;

    for (i = 0; i < 3; i++) {
        printf("Student %d:\n", i+1);
        printf("Subject 1: "); scanf("%d", &s[i].s1);
        printf("Subject 2: "); scanf("%d", &s[i].s2);
        printf("Subject 3: "); scanf("%d", &s[i].s3);
    }

    for (i = 0; i < 3; i++) {
        printf("Student %d: ", i+1);
        addition(s[i].s1, s[i].s2, s[i].s3);
    }

    return 0;
}

আউটপুট

Student 1:
Subject 1: 80
Subject 2: 75
Subject 3: 90
Student 2:
Subject 1: 60
Subject 2: 70
Subject 3: 65
Student 3:
Subject 1: 50
Subject 2: 55
Subject 3: 60
Student 1: Total marks = 245
Student 2: Total marks = 195
Student 3: Total marks = 165

তুলনা: পুরো স্ট্রাকচার vs পৃথক মেম্বার পাস

দিকপুরো স্ট্রাকচার (by reference)পৃথক মেম্বার (by value)
সিনট্যাক্সfunc(&s)func(s.a, s.b)
ফাংশন প্যারামিটারstruct tag *ptrint a, int b
মূল ডেটা পরিবর্তনসম্ভবসম্ভব নয়
মেমরি খরচকম (শুধু ঠিকানা)বেশি (প্রতিটি মেম্বারের কপি)
  1. স্ট্রাকচার কনসেপ্ট ব্যবহার করে সি ভাষায় বিট ফিল্ড ব্যাখ্যা

  2. পাইথনে ফাংশনে অপশনাল প্যারামিটার পাস করার পদ্ধতি

  3. পাইথন ফাংশনে আর্গামেন্ট রেফারেন্স দিয়ে পাস করার পদ্ধতি

  4. পাইথন ফাংশনে আর্গামেন্ট ভ্যালু দিয়ে পাস করার পদ্ধতি