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

C/C++-তে কেন a[i] == i[a] হয় অ্যারেতে?

এখানে আমরা C বা C++-এর একটি বিস্ময়কর ট্রিক দেখব। অ্যারে সাবস্ক্রিপ্ট A[i] কে i[A] হিসাবেও লিখা যায়। C/C++-এ E1[E2] কে *((E1) + (E2)) হিসেবে সংজ্ঞায়িত করা হয়। কম্পাইলার ইন্টারনালি অ্যারিথমেটিক করে অ্যারে এলিমেন্টগুলো এক্সেস করে। রুলসের কনভারশন (conversion rules) যা বাইনারি + অপারেটরে প্রয়োগ হয়, তার কারণে যদি E1 একটি অ্যারে অবজেক্ট হয় এবং E2 একটি ইন্টিজার হয়, তবে E1[E2] E1 অ্যারেতে E2তম এলিমেন্টকে নির্দেশ করে। তাই A[B] কে *(A + B) হিসেবে ডিফাইন করা যায়, আবার B[A] = *(B + A)। সুতরাং এগুলো মূলত একই জিনিস।

উদাহরণ (C++ প্রোগ্রাম)

#include <iostream>
using namespace std;

int main() {
    int array[] = {1, 2, 3, 4, 5, 6, 7};
    cout << "array[5] is " << array[5] << endl;
    cout << "5[array] is " << 5[array];
}

আউটপুট

array[5] is 6
5[array] is 6

ব্যাখ্যা: array[5] মানে *(array + 5), আর 5[array] মানে *(5 + array)। পয়েন্টার অ্যারিথমেটিক-এ যোগ অপারেশন কমিউটেটিভ (commutative), তাই array + 5 == 5 + array। এই কারণে দুটো একই ফলাফল দেয়। এটি C/C++-এর একটি অনন্য বৈশিষ্ট্য যা বেগinners-কে বিস্মিত করে।

  1. সি/সি++-তে মাল্টিডাইমেনশনাল অ্যারে ইনিশিয়ালাইজেশন (Initialization)

  2. C++-এ ফাংশনে অ্যারে পাস করা: পয়েন্টার ও রেফারেন্স

  3. C/C++-এ মাল্টি-ডাইমেনশনাল অ্যারে ডিফাইন করা

  4. C++-এ অ্যারে (Array) ব্যবহার করার পদ্ধতি