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

সি ও সি++-এ ভেরিয়েবল লেন্থ অ্যারে (VLA)


এখানে আমরা সি++-এ ভেরিয়েবল লেন্থ অ্যারে (VLA) নিয়ে আলোচনা করব। এর ব্যবহার করে আমরা ভেরিয়েবল সাইজের একটি অটো অ্যারে অ্যালোকেট করতে পারি। সি-তে, সি৯৯ স্ট্যান্ডার্ড থেকে ভেরিয়েবল সাইজড অ্যারে সাপোর্ট করা হয়। নিচের ফরম্যাট এই কনসেপ্ট সাপোর্ট করে −

void make_arr(int n){    int array[n]; } int main(){    make_arr(10); }

কিন্তু, সি++ স্ট্যান্ডার্ডে (সি++১১ পর্যন্ত) ভেরিয়েবল লেন্থ অ্যারে কোনো কনসেপ্ট ছিল না। সি++১১ স্ট্যান্ডার্ড অনুযায়ী, অ্যারে সাইজ কনস্ট্যান্ট-এক্সপ্রেশন হিসেবে উল্লেখ করা হয়। তাই, উপরের কোড ব্লকটি সি++১১ বা তার নিচে বৈধ নাও হতে পারে। সি++১৪-এ অ্যারে সাইজ সিম্পল এক্সপ্রেশন (নন-কনস্ট্যান্ট) হিসেবে উল্লেখ করা হয়।

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −

#include<iostream> #include<cstring> #include<cstdlib> using namespace std; class employee {    public:       int id;       int name_length;       int struct_size;       char emp_name[0]; }; employee *make_emp(struct employee *e, int id, char arr[]) {    e = new employee();    e->id = id;    e->name_length = strlen(arr);    strcpy(e->emp_name, arr);    e->struct_size=( sizeof(*e) + sizeof(char)*strlen(e->emp_name) );    return e; } void disp_emp(struct employee *e) {    cout << "Emp Id:" << e->id << endl;    cout << "Emp Name:" << e->emp_name << endl;    cout << "Name Length:" << e->name_length << endl;    cout << "Allocated:" << e->struct_size << endl;    cout <<"---------------------------------------" << endl; } int main() {    employee *e1, *e2;    e1=make_emp(e1, 101, "Jayanta Das");    e2=make_emp(e2, 201, "Tushar Dey");    disp_emp(e1);    disp_emp(e2);    cout << "Size of student: " << sizeof(employee) << endl;    cout << "Size of student pointer: " << sizeof(e1); }

আউটপুট

Emp Id:101 Emp Name:Jayanta Das Name Length:11 Allocated:23 --------------------------------------- Emp Id:201 Emp Name:Tushar Dey Name Length:10 Allocated:22 --------------------------------------- Size of student: 12 Size of student pointer: 8

  1. সি ভাষায় ভেরিয়েবল লেন্থ আর্গুমেন্ট (Variadic Functions): stdarg.h ব্যবহার

  2. সি/সি++-তে মাল্টিডাইমেনশনাল অ্যারে (Multidimensional Arrays)

  3. বৃত্ত ও আয়ত ওভারল্যাপ চেক করা C++-এ

  4. C++-এ ডমিনো ও ট্রোমিনো টাইলিং