C/C++ में स्टैटिक ऐरे का आकार (तत्वों की संख्या) sizeof ऑपरेटर से प्राप्त किया जा सकता है।
विधि
size_t count = sizeof(array) / sizeof(array[0]);
sizeof(array): पूरे ऐरे का कुल बाइट आकार।sizeof(array[0]): एक तत्व का आकार।- भागफल = तत्वों की संख्या।
उदाहरण
#include <iostream>
using namespace std;
int main() {
int data[] = {11, 22, 33, 44, 55, 66, 77, 88, 99, 91, 82, 73, 64};
cout << "Memory occupied by data[]: " << sizeof(data) << " bytes\n";
cout << "Number of elements: " << sizeof(data) / sizeof(data[0]) << endl;
// मैक्रो के रूप में (सामान्य अभ्यास)
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
cout << "Using macro: " << ARRAY_SIZE(data) << endl;
return 0;
}
आउटपुट
Memory occupied by data[]: 52 bytes Number of elements: 13 Using macro: 13
महत्वपूर्ण सीमाएं
- केवल स्टैटिक/ऑटोमैटिक ऐरे पर काम करता है जिसका आकार कंपाइल टाइम पर ज्ञात हो।
- फंक्शन पैरामीटर के रूप में पास किए गए ऐरे पर काम नहीं करता - वे पॉइंटर में डिके हो जाते हैं।
- डायनामिकली अलोकेटेड मेमोरी (
malloc,new) पर काम नहीं करता।
फंक्शन में ऐरे पास करना
void printSize(int arr[]) { // वास्तव में int *arr
// sizeof(arr) यहां पॉइंटर आकार देता है (4 या 8), ऐरे आकार नहीं!
printf("In function: %zu\n", sizeof(arr)); // गलत!
}
int main() {
int arr[10];
printf("In main: %zu\n", sizeof(arr)); // सही: 40 (या 80)
printSize(arr);
return 0;
}
समाधान
- आकार को अलग पैरामीटर के रूप में पास करें।
- C++ में
std::arrayयाstd::vectorउपयोग करें (.size()विधि)। - C में स्ट्रक्चर में ऐरे + आकार रखें।