بدست آوردن طول آرایه در ++C ، از آنجایی که در ++C توابع size یا length وجود ندارد مجبوریم برای بدست آوردن طول آرایه در ++C از تابع sizeof استفاده کنیم. کار تابع sizeof به این صورت است که سایز (میزان فضای اشغالی در حافظه) متغیر داده شده را به ما برمیگرداند. از آنجایی که سایز یک آرایه برابر است با سایز یکی از عناصر آرایه ضرب در طول آرایه در نتیجه برای بدست آوردن طول یک آرایه کافیست سایز کل آرایه را بر سایز یکی از عناصر آن تقسیم کنیم تا طول آرایه بدست آید.
آرایه ها
آرایه مجموعه اي از عناصر همنوع است. هر آرایه داراي نامی است که مانند متغیرهاي معمولی نامگذاري میشود. آرایه یک مجموعه از محلهاي متوالی حافظه است .هر محل یک عنصر آرایه به شمار می رود. استفاده (index) براي دسترسی به عناصر آرایه از متغیري بنام اندیس میگردد. به همین دلیل، آرایه را متغیر اندیس دار میگویند.براي دسترسی به هر عنصر آرایه باید محل آنرا در آرایه بدانیم یعنی یک اندیس به محل آن داشته باشیم.
مثال: برنامه ای بنویسید که طول یک آرایه را برای ما چاپ کند؟
جواب کد:
#include <iostream> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5, 6}; int length = sizeof(arr)/sizeof(arr[0]); cout << "Length of arr[] is "<< length; return 0; }
البته طول یک آرایه را با استفاده از پوینتر (pointer) و اختلاف آدرس خانه های آرایه نیز میتوان بدست آورد. از آنجایی که نحوه ی کار کمی پیچیده است فقط میتوانم بگویم که *(&arr + 1) – arr اختلاف آدرس شروع آرایه تا آدرس بعد از آن را برمیگرداند که همان طول آرایه است.
و کد زیر طول آرایه را بدون استفاده از sizeof
چاپ میکند.
کد بدون استفاده از sizeof:
#include <iostream> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5, 6}; int length = *(&arr + 1) - arr; cout << "Length of arr[] is "<< length; return 0; }
خروجی هر دو برنامه به صورت زیر خواهد بود:
Length of arr[] is 6
دیدگاه و پرسش