Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी और सी ++ में परिवर्तनीय लंबाई सरणी


यहां हम C++ में वेरिएबल लेंथ एरे के बारे में चर्चा करेंगे। इसका उपयोग करके हम परिवर्तनीय आकार की एक ऑटो सरणी आवंटित कर सकते हैं। सी में, यह सी 99 मानक से परिवर्तनीय आकार के सरणी का समर्थन करता है। निम्न प्रारूप इस अवधारणा का समर्थन करता है -

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

लेकिन, C++ मानक (C++11 तक) में परिवर्तनीय लंबाई सरणी की कोई अवधारणा नहीं थी। सी ++ 11 मानक के अनुसार, सरणी आकार को निरंतर अभिव्यक्ति के रूप में वर्णित किया गया है। तो, कोड का उपरोक्त ब्लॉक मान्य C++ 11 या उससे कम नहीं हो सकता है। C++14 में एक साधारण व्यंजक के रूप में सरणी आकार का उल्लेख है (स्थिर-अभिव्यक्ति नहीं)।

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#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. सी / सी ++ में बहुआयामी सरणी

    C/C++ में, बहुआयामी सरणी को सरल शब्दों में सरणियों के सरणी के रूप में परिभाषित किया गया है। बहुआयामी सरणियों में डेटा को सारणीबद्ध रूप में (पंक्ति प्रमुख क्रम में) संग्रहीत किया जाता है। निम्न आरेख 3 x 3 x 3 आयाम वाले बहुआयामी सरणी के लिए स्मृति आवंटन रणनीति दिखाता है। एल्गोरिदम Begin    

  1. C++ में वृत्त और आयत ओवरलैपिंग

    मान लीजिए कि हमारे पास एक वृत्त है जिसे (त्रिज्या, xc, yc) के रूप में दर्शाया गया है, यहाँ (xc, yc) वृत्त का केंद्र निर्देशांक है। हमारे पास एक अक्ष-संरेखित आयत भी है जिसे (x1, y1, x2, y2) के रूप में दर्शाया गया है, जहाँ (x1, y1) निचले-बाएँ कोने के निर्देशांक हैं, और (x2, y2) शीर्ष-दाएँ के निर्देशां

  1. डोमिनोज़ और ट्रोमिनो टाइलिंग सी++ . में

    मान लीजिए कि हमारे पास दो प्रकार की आकृतियाँ हैं, डोमिनोज़ और ट्रोमिनो। उन्हें नीचे की तरह घुमाया जा सकता है - एक टाइलिंग में, प्रत्येक वर्ग को एक टाइल से ढंकना चाहिए। यहां दो टाइलिंग अलग-अलग हैं यदि और केवल तभी जब बोर्ड पर दो 4-प्रत्यक्ष रूप से आसन्न कोशिकाएं हों, जैसे कि टाइलिंग में से एक में द