ফাংশন C ++ থেকে অ্যারে ফেরত দিন

Return Array From Function C



অ্যারে হল নির্দিষ্ট পাত্রে যার একই ডাটা টাইপের মান আছে। C ++ এর ফাংশনগুলি অ্যারেতে কাজ করে এবং এই অ্যারেগুলি মূল ফাংশনে ফিরে আসে। এই ঘটনাটি বর্ণনা করার জন্য অনেক পন্থা রয়েছে। এই নির্দেশিকায়, কিছু সাধারণ পদ্ধতি ব্যাখ্যা করা হয়েছে:

স্ট্যাটিক অ্যারে ফেরাতে পয়েন্টার ব্যবহার করুন

যখন আমরা একটি সাধারণ অ্যারে ব্যবহার করি, তখন কিছু ধরণের অস্বাভাবিক ফলাফলের সম্ভাবনা থাকে। এটি এড়ানোর জন্য, আমরা আমাদের C ++ কোডে একটি স্ট্যাটিক অ্যারে ব্যবহার করি। আসুন আমরা যে উদাহরণটি ব্যবহার করেছি তা বুঝতে পারি। এই ফাংশনে, আমরা এখানে উল্লিখিত 5 টি মান রিটার্ন টাইপ সহ একটি অ্যারে ঘোষণা করেছি।







Int *ফাংশন ()



যেহেতু মানটি একটি পূর্ণসংখ্যা টাইপ হবে, তাই এটি নিচের উদাহরণে int হিসাবে ট্যাগ করা হয়েছে। যেহেতু আমরা একটি পয়েন্টার হিসাবে ফাংশনটি চালু করেছি, ফাংশনটি একটি পয়েন্টার টাইপ হবে। মানগুলি প্রবেশ করার পরে, একটি অ্যারে মূল প্রোগ্রামে ফিরে আসে।







মূল প্রোগ্রামে, আমরা একটি ফাংশন কল করেছি। ফাংশন থেকে ফিরে আসা মান গ্রহণ করতে, আমরা একটি পূর্ণসংখ্যা পরিবর্তনশীল ব্যবহার করব। যখন অ্যারে ফিরে আসে, আমরা সহজেই এর মানগুলি অ্যাক্সেস করতে পারি। মানগুলি ম্যানুয়ালি মুদ্রিত হবে।

ইন্ট*নির্দেশক=ফাংশন();

পয়েন্টারটির উদ্দেশ্য হল আইটেমটি সনাক্ত করা যা একটি অ্যারের সূচকে উপস্থিত। অন্য কথায়, এটি অ্যারের মানটির ঠিকানা দেখায়। তারপরে, আমরা একটি ফাংশন প্রোটোটাইপ ব্যবহার করি যা পয়েন্টার ফিরিয়ে দেবে।



ফাংশনের মাধ্যমে ফিরে আসা অ্যারের আউটপুট দেখতে, লিনাক্সের ক্ষেত্রে আমাদের উবুন্টু টার্মিনালে অ্যাক্সেস থাকতে হবে। এটি লিনাক্স টার্মিনালের মাধ্যমে আউটপুট অ্যাক্সেসযোগ্য হওয়ার কারণে। লিনাক্সে, যেকোনো টেক্সট এডিটরে লেখা C ++ কোড চালানোর জন্য আমাদের একটি কম্পাইলার দরকার। এই সংকলনটি G ++ এর মাধ্যমে করা হয়। -O একটি ফাইলে আউটপুট সংরক্ষণ করতে ব্যবহৃত হয়। এখানে, আমাদের আউটপুট ফাইল এবং সোর্স কোড ফাইল দরকার। সংকলনের পরে, আমরা কোডটি কার্যকর করব:

$g ++ -অথবাfile1 file1.c
$/ফাইল 1

আউটপুট থেকে, আমরা অ্যারে দেখতে পাচ্ছি, যা ফাংশনে আরম্ভ করা হয়েছিল, স্ট্যাটিক অ্যারে ব্যবহার করে, ম্যানুয়ালি এবং পয়েন্টারগুলির মাধ্যমে প্রাথমিক ফাংশনে প্রদর্শিত হয়।

পয়েন্টার ব্যবহার করে গতিশীলভাবে বরাদ্দকৃত অ্যারে ফিরে আসুন

ডাইনামিক বরাদ্দ ব্যবহার করে অ্যারে ফেরত দেওয়া যায়। নতুন শব্দটি ব্যবহার করে অ্যারেগুলি গতিশীলভাবে বরাদ্দ করা যেতে পারে। যতক্ষণ না আমরা তাদের নিজেদের দ্বারা মুছে ফেলি ততক্ষণ তারা সেখানেই থাকবে। স্ট্যাটিক অ্যারেগুলি আকারে স্থির করা হয়েছে, যার অর্থ আপনাকে আরম্ভের সময় আকার সরবরাহ করতে হবে। একবার অ্যারে তৈরি হয়ে গেলে, রান টাইম বা পরকালে আকার বৃদ্ধি করা কঠিন। কিন্তু ডায়নামিক অ্যারের ক্ষেত্রে, আমরা যখনই চাই তখন আরো আইটেম যোগ করতে পারি কারণ এটি যখন আমরা মানগুলি প্রবেশ করি তখন এটি প্রসারিত হয়। সুতরাং আমাদের কোন আকার নির্দিষ্ট বা চিহ্নিত করার দরকার নেই।

আমরা এখানে ব্যবহার করা উদাহরণের দিকে এগিয়ে যাচ্ছি। আমরা পূর্ববর্তী উদাহরণগুলির মতো পয়েন্টারগুলির সাথে একটি গতিশীল অ্যারে ব্যবহার করেছি, যেখানে আমরা স্ট্যাটিক অ্যারেগুলির সাথে পয়েন্টার ব্যবহার করেছি।

ইন্ট*ফাংশন()

ফাংশন ঘোষণার পরে, অ্যারে গতিশীলভাবে ঘোষণা করা হয়:

ইন্ট*অ্যারে= নতুন int [100];

শব্দটি, নতুন, ক্রমাগত একটি গতিশীল অ্যারে তৈরি করতে ব্যবহৃত হয়। আমরা অ্যারেতে মান সন্নিবেশ করিয়ে অপারেশন করব। এর পরে, অ্যারেটি মূল প্রোগ্রামে ফিরে আসে:

এখন, প্রধান ফাংশন বিবেচনা করুন। আমরা ফাংশন কল করেছি। অ্যারে ফেরত আসার সাথে সাথে আমরা মান গ্রহণ করতে একটি পয়েন্টার পূর্ণসংখ্যা টাইপ ভেরিয়েবল যোগ করি।

ইন্ট*নির্দেশক=ফাংশন();

অ্যারেতে সংরক্ষিত মানগুলি ম্যানুয়ালি মুদ্রিত হয়। আউটপুট সংকলন এবং নির্বাহ পদ্ধতির মাধ্যমে প্রাপ্ত হয়।

কাঠামো ব্যবহার করে অ্যারে ফেরত দিন

কাঠামো হচ্ছে অ্যারের মত পাত্রে। কিন্তু অ্যারে একই সময়ে একই ডেটা টাইপের মান ধারণ করে। এবং কাঠামোর ক্ষেত্রে, তারা একাধিক ডেটা টাইপ মান ধারণ করে। আমরা নমুনা নামে একটি কাঠামো নিয়েছি। এখানে, অ্যারের ঘোষণা ফাংশনের পরিবর্তে কাঠামোর ভিতরে। রিটার্ন টাইপ হল কাঠামোর নাম। স্ট্রাকচার ভেরিয়েবল মূল প্রোগ্রামে ফিরিয়ে দেওয়া হয়। কাঠামো ঘোষণার জন্য গঠন শব্দ ব্যবহার করে।

গঠন নমুনা
{
Int arr[100];
};

কাঠামো ঘোষণার পরে, আমরা একটি ফাংশন ব্যবহার করেছি যেখানে কাঠামোর একটি বস্তু তৈরি করা হয়। এই বস্তুটি কাঠামো অ্যাক্সেস করতে ব্যবহার করা হবে। এই ফাংশনটি মূল ফাংশনে কাঠামোর বস্তুটি ফিরিয়ে দেবে যাতে আমরা এই বস্তুর মাধ্যমে অ্যারে মুদ্রণ করতে পারি। একটি ভেরিয়েবল ভেরিয়েবলের মান পাবে। এই মান হল পূর্ণসংখ্যা সংখ্যা যেখানে আমরা অ্যারেতে মান লিখব। এই উদাহরণ হিসাবে, আমরা সংখ্যা হিসাবে 6 নির্বাচন করেছি। সুতরাং, সংখ্যাগুলি অ্যারেতে 6 পর্যন্ত প্রবেশ করা হবে।

গঠন নমুনা func(intn)

এখন, মূল প্রোগ্রামের দিকে অগ্রসর হয়ে, আমরা এর মাধ্যমে অ্যারে অ্যাক্সেস করার জন্য একটি বস্তু তৈরি করেছি:

গঠন নমুনা x;

অবজেক্ট শুরুর পরে, ভেরিয়েবলে একটি মান যোগ করা হয় যেখানে আমরা অ্যারেতে সংখ্যাগুলি প্রবেশ করতে চাই। একটি ফাংশন কলে, আমরা প্যারামিটারে মান পাস করব:

এক্স=ফাংশন(n);

আমাদের জন্য লুপ ব্যবহার করে ডিসপ্লে থাকবে। মূল প্রোগ্রামের শুরুতে ঘোষিত বস্তুর মাধ্যমে মানগুলি প্রদর্শিত হয়:

আউটপুট নির্দেশ করে যে ফলাফলে 6 টি মান দেখানো হয়েছে কারণ আমরা প্রোগ্রামে 6 টি সংখ্যা প্রবেশ করেছি।

Std ব্যবহার করে অ্যারে ফেরত দিন

ফাংশন থেকে একটি অ্যারে ফেরত দেওয়ার জন্য C ++ অনেক পদ্ধতি ব্যবহার করে। এর মধ্যে একটি হল std :: array এর মাধ্যমে। এটি কাঠামোর একটি টেমপ্লেট। এই বৈশিষ্ট্যটি আরও দুটি ফাংশন সরবরাহ করে যা আকার () এবং খালি ()। একটি অ্যারের নাম ফেরত দেওয়া হয়েছে যা ইঙ্গিত করে যে পুরো অ্যারেটি মূল প্রোগ্রামে ফিরে এসেছে। এখানে, আমরা একটি হেডার ফাইল অ্যারে যুক্ত করব। লাইব্রেরি ছাড়াও এতে অ্যারের সব ফাংশন রয়েছে।

#অন্তর্ভুক্ত

অ্যারে<int,10>ফাংশন()

যেহেতু আমরা এর নামের সাথে পুরো অ্যারে ফিরিয়ে দিতে পারি, তাই ফাংশনের ঘোষণায় আমরা অ্যারেকে রিটার্ন টাইপ হিসেবে ব্যবহার করব। অ্যারেতে ডেটা প্রবেশ করানো হয়। এর পরে, অ্যারেটি মূল প্রোগ্রামে ফিরিয়ে দেওয়া হবে। প্রধান ফাংশনের দিকে এগিয়ে যাওয়া, একটি অ্যারে ভেরিয়েবল যখন অ্যারেটি গ্রহণ করবে তখন ফাংশনটি বলা হবে।

আগমন=ফাংশন();

আবার, লুপের জন্য অ্যারের মান প্রদর্শনের জন্য ব্যবহার করা হবে। আমরা নীচে প্রদর্শিত চিত্র থেকে আউটপুট পর্যবেক্ষণ করি। যেহেতু আমরা 10 টি মাপ ব্যবহার করেছি, 0 নম্বর প্রবেশ করা হবে। অতএব, এগুলি প্রদর্শিত হয়:

ভেক্টর কন্টেইনারের মাধ্যমে অ্যারে ফেরত দিন

এই পদ্ধতিটি একটি গতিশীলভাবে বরাদ্দকৃত অ্যারে। এই ক্ষেত্রে হিসাবে, অ্যারের আকার নির্দিষ্ট করার কোন প্রয়োজন নেই। আমাদের এখানে কোন সাইজের প্যারামিটারের প্রয়োজন নেই। এই উদাহরণ ব্যবহার করে, আমাদের লাইব্রেরিতে একটি ভেক্টর হেডার যুক্ত করতে হবে যাতে ভেক্টরের কার্যকারিতা রয়েছে।

ফাংশনের দিকে এগিয়ে যাওয়া, যেখানে রিটার্ন টাইপ একটি int ভেক্টর এবং প্যারামিটারে যুক্তি হিসাবে একটি ভেক্টর পয়েন্টারও থাকে। টেম্প নামের একটি অ্যারে এখানে চালু করা হয়েছে:

ভেক্টর<int>MultiplyArrayByTwo(constভেক্টর<int> *আগমন)

ফাংশনটি tmp.push_back () ফাংশন ব্যবহার করে অ্যারের উপাদানগুলিকে দুই দিয়ে গুণ করবে। তারপরে, tmp ফেরত দিন। একটি অটো-টাইপ ভেরিয়েবল ফাংশন থেকে অ্যারের মান গ্রহণ করবে। অ্যারেটিতে আইটেম রয়েছে।

আউটপুট ভেক্টর পাত্রে কাজ দেখায়।

উপসংহার

উপরোক্ত নিবন্ধে, আমরা ফাংশন থেকে একটি অ্যারে ফেরত দেওয়ার কার্যকারিতা ব্যাখ্যা করার জন্য সর্বাধিক ব্যবহৃত পাঁচটি পদ্ধতি বর্ণনা করেছি।