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

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

পুরো অ্যারে পাস করা (Call by Reference / Pointer Decay)

সি-তে অ্যারে ফাংশনে পাস করলে এটি পয়েন্টারে ডিকে (decay) হয় — শুধু প্রথম এলিমেন্টের ঠিকানা পাস হয়। ফাংশন আসল অ্যারে এক্সেস ও মডিফাই করতে পারে।

সিনট্যাক্স


// কল
func(arr); // বা func(&arr[0])

// ফাংশন প্রোটোটাইপ/ডেফিনিশন (তিনটি সমতুল্য)
void func(int arr[]);
void func(int arr[10]); // সাইজ উপেক্ষা করা হয়
void func(int *arr);    // সবচেয়ে স্পষ্ট

উদাহরণ ১: অ্যারে প্রিন্ট করা

#include <stdio.h>

void display(int a[5]); // প্রোটোটাইপ

int main() {
    int a[5], i;

    printf("Enter 5 elements: ");
    for (i = 0; i < 5; i++)
        scanf("%d", &a[i]);

    display(a); // অ্যারে নাম পাস = বেস এড্রেস

    return 0;
}

void display(int a[5]) {
    int i;
    printf("Array elements: ");
    for (i = 0; i < 5; i++)
        printf("%d ", a[i]);
    printf("\n");
}

আউটপুট

Enter 5 elements: 10 20 30 40 50
Array elements: 10 20 30 40 50

উদাহরণ ২: অ্যারে মডিফাই করা (সর্টিং)

#include <stdio.h>

void sort(int *arr, int n); // পয়েন্টার নোটেশন

int main() {
    int a[5] = {50, 10, 40, 20, 30};
    sort(a, 5);

    printf("Sorted: ");
    for (int i = 0; i < 5; i++)
        printf("%d ", a[i]);
    return 0;
}

void sort(int *arr, int n) {
    // সিম্পল বাবল সর্ট
    for (int i = 0; i < n-1; i++)
        for (int j = 0; j < n-1-i; j++)
            if (arr[j] > arr[j+1]) {
                int t = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = t;
            }
}

আউটপুট

Sorted: 10 20 30 40 50

গুরুত্বপূর্ণ নোট

  • ফাংশনে অ্যারে পাস করলে sizeof(arr) ফাংশন ভিতরে পয়েন্টার সাইজ দেবে, অ্যারে সাইজ নয়। সাইজ আলাদা পাস করুন।
  • মাল্টি-ডাইমেনশনাল অ্যারে পাস করলে সকল ডাইমেনশন বাদে প্রথমটি ছাড়া বাকিগুলো স্পেসিফাই করতে হয়: void func(int a[][10], int rows)।
  • অ্যারে পাস করা সবসময় কল বাই রেফারেন্স (পয়েন্টার পাস) হয়।
  1. অ্যান্ড্রয়েডে অ্যারে এলিমেন্ট সর্ট করার পদ্ধতি

  2. C ভাষায় পয়েন্টার ব্যবহার করে অ্যারে এলিমেন্টের যোগফল বের করার পদ্ধতি

  3. সি প্রোগ্রামিং-এ অ্যারের সর্টেড ডিস্টিংক্ট এলিমেন্ট প্রিন্ট করা

  4. পাইথন ফাংশন আর্গামেন্ট হিসেবে ফাংশন পাস করা