পদগুলি কী বোঝায় তার স্পষ্ট সংজ্ঞা থাকা গুরুত্বপূর্ণ important দুর্ভাগ্যক্রমে স্থির এবং গতিশীল অ্যারে বলতে কী বোঝায় তার একাধিক সংজ্ঞা রয়েছে বলে মনে হয়।
স্ট্যাটিক ভেরিয়েবলগুলি স্থির মেমরি বরাদ্দ ব্যবহার করে সংজ্ঞাযুক্ত পরিবর্তনশীল । এটি সি / সি ++ এর চেয়ে আলাদা একটি সাধারণ ধারণা। সি / সি ++ এ আমরা গ্লোবাল, ফাইল বা স্থানীয় স্কোপ সহ স্ট্যাটিক ভেরিয়েবলগুলি তৈরি করতে পারি:
int x[10];
static int y[10];
foo() {
static int z[10];
স্বয়ংক্রিয় ভেরিয়েবলগুলি সাধারণত স্ট্যাক-ভিত্তিক মেমরি বরাদ্দ ব্যবহার করে প্রয়োগ করা হয় । সি / সি ++ এর মতো একটি স্বয়ংক্রিয় অ্যারে তৈরি করা যেতে পারে:
foo() {
int w[10];
এই অ্যারেগুলি x, y, z
, এবংw
মধ্যে যা আছে তা হ'ল তাদের প্রত্যেকের জন্য আকার নির্দিষ্ট করা হয় এবং সংকলনের সময় সংজ্ঞায়িত করা হয়।
একটি স্বয়ংক্রিয় অ্যারে এবং একটি স্ট্যাটিক অ্যারের মধ্যে পার্থক্য বুঝতে গুরুত্বপূর্ণ যে কারণগুলির মধ্যে একটি হ'ল স্ট্যাটিক স্টোরেজ সাধারণত কোনও বস্তুর ফাইলের ডেটা বিভাগে (বা বিএসএস বিভাগ ) এবং সংকলক অ্যারেগুলি অ্যাক্সেস করার জন্য পরম ঠিকানা ব্যবহার করতে পারে যা স্ট্যাক-ভিত্তিক স্টোরেজ সহ অসম্ভব।
সাধারণত গতিশীল অ্যারে বলতে যা বোঝায় সেটি হ'ল আকার পরিবর্তনযোগ্য নয় তবে এটি ব্যবহার করে কার্যকর করা হয়েছে আকার পরিবর্তনযোগ্য রান-টাইমে নির্ধারিত একটি নির্দিষ্ট আকার সহ গতিশীল মেমরি বরাদ্দ । সি ++ এ এটি new
অপারেটর ব্যবহার করে করা হয় ।
foo() {
int *d = new int[n];
তবে রানটাইম ব্যবহার করে সংশোধন করা আকারগুলির সাথে একটি স্বয়ংক্রিয় অ্যারে তৈরি করা সম্ভব alloca
:
foo() {
int *s = (int*)alloca(n*sizeof(int))
সত্যিকারের গতিশীল অ্যারের std::vector
জন্য সি ++ (অথবা সিতে একটি পরিবর্তনশীল দৈর্ঘ্যের অ্যারে ) এর মতো কিছু ব্যবহার করা উচিত ।
ওপির প্রশ্নের কার্যবিধির জন্য কী বোঝানো হয়েছিল? আমি মনে করি এটি পরিষ্কার যে যা চেয়েছিল তা স্থির বা স্বয়ংক্রিয় অ্যারে নয় যা new
অপারেটর ব্যবহার করে গতিশীল মেমরি বরাদ্দ ব্যবহার করেছিল বা উদাহরণস্বরূপ একটি অ-স্থির আকারের অ্যারে ব্যবহার করেছিল std::vector
।