آرایه ها یکی از ساده ترین اشکال ذخیره سازی ساختار یافته داده ها هستند. از آنجا که مناطق حافظه غیر قابل تقسیم برای ذخیره آرایه های یک بعدی اختصاص داده شده است ، و بیشتر زبان های برنامه نویسی ساختارهای نحوی را برای اعلام خود دارند ، آنها به شدت به عنوان بافر برای انتقال مقادیر زیادی از اطلاعات به عملکردهای مختلف (از جمله کتابخانه) استفاده می شوند. به نوبه خود ، توابع گاهی اوقات نیاز به بازگشت یک آرایه دارند.
ضروری
- - ویرایشگر متن
- - کامپایلر و پیوند دهنده C یا C ++.
دستورالعمل ها
مرحله 1
داده ها را از یک تابع یا روش با قرار دادن در یک آرایه با طول ثابت ، که توسط تماس گیرنده اختصاص داده شده و از طریق مرجع ارسال می شود ، برگردانید. نوع داده مناسب را تعریف کنید ، به عنوان مثال: typedef int t_array10 [10] ؛ از آن در تعریف و اجرای عملکرد یا روش مورد نیاز استفاده کنید: void ReturnArray (t_array10 & raOut) {raOut [0] = 10؛} تماس مناسب: int aNumbers [10] ؛ ReturnArray (aNumbers) ؛ عیب این روش ثابت بودن طول آرایه است.
گام 2
داده های آرایه را با قرار دادن آنها در یک بافر خروجی اختصاص داده شده توسط تماس گیرنده که توسط اشاره گر منتقل شده است ، برگردانید. نمونه اولیه یک تابع یا روش می تواند حاوی پارامتری باشد که هر دو در نت آرایه بدون مشخصات اندازه مشخص می شود: void ReturnArray (int anArray ، int nSize) ؛ یا به عنوان یک اشاره گر: void ReturnArray (int * pnArray، int nSize) موارد ، پارامتر شناسه را می توان در علامت گذاری آرایه استفاده کرد: void ReturnArray (int * pnArray، int nSize) {for (nSize--؛ nSize> -1؛ pnArray [nSize] = nSize--)؛} // تماس با int تعداد [10]؛ ReturnArray (aNumbers، sizeof (aNbers) / sizeof (aNumbers [0]))؛ این روش عبور آرایه ها به توابع و برگرداندن داده های آرایه از آنها در اکثر موارد در هنگام توسعه برنامه های C استفاده می شود. توجه داشته باشید که توابع و روشهایی که از این طریق داده ها را می پذیرند و برمی گردانند ، به عنوان یک قاعده ، باید یک پارامتر اضافی داشته باشند که از طریق آن اندازه واقعی بافر عبور داده شود.
مرحله 3
آرایه ایجاد شده در یک تابع یا روش را برگردانید. به طور رسمی ، در این حالت ، نباید یک آرایه برگردانده شود ، بلکه یک نشانگر به اولین عنصر خود بازگردد: int * ReturnArray () {int * pnArray = new int [10]؛ // کار با pnArray بازگشت pnArray؛} // اشاره گر به آرایه ایجاد شده int * pnNumbers = ReturnArray ()؛ // استفاده از حذف pnNumbers؛ // حذف این روش محدودیت هایی دارد. بنابراین ، آرایه باید در heap واقع شود. علاوه بر این ، حذف آن باید با روش مربوط به ایجاد (حذف در مورد استفاده از جدید ، رایگان برای malloc و غیره) انجام شود.
مرحله 4
هنگام بازگرداندن برنامه های C ++ از کلاس های کانتینر برای بازگشت راحت آرایه ها استفاده کنید. نمونه ای از ایجاد و برگرداندن آرایه ای که از کلاس الگوهای برداری کتابخانه استاندارد الگو C ++ است که برای int مشخص شده است ، ممکن است به این صورت باشد: #include std:: vector ReturnArray () {std:: vector oArray؛ oArray.resize (10)؛ oArray [0] = 100؛ o آرایه [1] = 200؛ Return oArray؛} std:: vector oArray = ReturnArray () ؛ توجه داشته باشید که بیشتر فریم ورک های محبوب کلاسهای قدرتمند یا الگوهای کلاس آرایه را ارائه می دهند. آنها اغلب مفهوم اشتراک داده های ضمنی را با شمارش مرجع و کپی بر روی نوشتن پیاده سازی می کنند. بنابراین ، بازگشت مقدار این آرایه ها از توابع به میزان بسیار کارآمد انجام می شود و با حداقل مصرف منابع محاسباتی همراه است.