মনে করুন আপনার কাছে চারটি এলিমেন্টের একটি অ্যারে আছে। তখন অ্যারে ইন্ডেক্সিং হবে 0 থেকে 3, অর্থাৎ আমরা 0 থেকে 3 পর্যন্ত ইন্ডেক্স থেকে এলিমেন্ট অ্যাক্সেস করতে পারি।
কিন্তু, যদি আমরা ৩ থেকে বড় ইন্ডেক্স ব্যবহার করি, তবে সেটিকে আউট অফ বাউন্ডস ইন্ডেক্স বলা হয়।
যদি আমরা আউট অফ বাউন্ডস অ্যারে ইন্ডেক্স ব্যবহার করি, তবে কম্পাইলার কম্পাইল করবে এবং রানও করবে। কিন্তু সঠিক ফলাফলের কোনো গ্যারান্টি নেই।
ফলাফল অনিশ্চিত হতে পারে এবং অনেক সমস্যা সৃষ্টি করতে পারে। তাই অ্যারে ইন্ডেক্সিংয়ে সাবধানে থাকার পরামর্শ দেওয়া হয়।
উদাহরণ প্রোগ্রাম
নিচে আউট অফ বাউন্ডস অ্যারে ইন্ডেক্সের একটি সি প্রোগ্রাম দেওয়া হলো −
#include<stdio.h> int main(void){ int std[4]; int i; std[0] = 100; //valid std[1] = 200; //valid std[2] = 300; //valid std[3] = 400; //valid std[4] = 500; //invalid(out of bounds index) //printing all elements for( i=0; i<5; i++ ) printf("std[%d]: %d\n",i,std[i]); return 0; }আউটপুট
উপরোক্ত প্রোগ্রাম এক্সিকিউট করলে নিচের ফলাফল আসে −
std[0]: 100 std[1]: 200 std[2]: 300 std[3]: 400 std[4]: 2314
ব্যাখ্যা
এই প্রোগ্রামে, অ্যারে সাইজ ৪, তাই অ্যারে ইন্ডেক্সিং হবে std[0] থেকে std[3]। কিন্তু এখানে, আমরা std[4]-এ ৫০০ মান অ্যাসাইন করেছি।
অতএব, প্রোগ্রাম সফলভাবে কম্পাইল ও এক্সিকিউট হয়েছে। কিন্তু প্রিন্ট করার সময়, std[4]-এর মান গার্বেজ। আমরা ৫০০ অ্যাসাইন করেছিলাম এবং ফলাফল ২৩১৪।