How to get the number of elements of an Array in Arduino
sizeof और सरल सूत्रों का उपयोग करके Arduino में array की लंबाई या तत्वों की संख्या कैसे खोजें।
Arduino array में elements की संख्या जानने के लिए sizeof(array) / sizeof(array[0]) का उपयोग करें। sizeof() ऑपरेटर array द्वारा मेमोरी में occupy किए गए कुल bytes लौटाता है, और एक element के bytes से विभाजित करने पर elements की कुल संख्या प्राप्त होती है।
त्वरित संदर्भ
| आपको क्या चाहिए | कोड | लौटाता है |
|---|---|---|
| Elements की संख्या | sizeof(arr) / sizeof(arr[0]) | Element count |
| कुल मेमोरी उपयोग | sizeof(arr) | Bytes |
| एक element का आकार | sizeof(arr[0]) | Bytes |
Arduino कोड में arrays का उपयोग बहुत आम है। हो सकता है आपने बिना size define किए एक array बनाया हो:
int digitalPins[] = {2, 3, 4, 5, 6};आपका पहला अनुमान sizeof() सीधे उपयोग करना हो सकता है:
int digitalPins[] = {2, 3, 4, 5, 6};
int totalPins = sizeof(digitalPins); // 10 लौटाता है, 5 नहीं!यह सही काम नहीं करता क्योंकि sizeof() bytes लौटाता है, elements की संख्या नहीं।
Arduino Array में Elements की संख्या कैसे निकालें
Array length = sizeof(array) / sizeof(array[0])
int digitalPins[] = {2, 3, 4, 5, 6};
int totalPins = sizeof(digitalPins) / sizeof(digitalPins[0]);
// totalPins = 10 / 2 = 5यह काम करता है क्योंकि:
sizeof(digitalPins)= 10 bytes (5 elements × 2 bytes प्रतिintArduino Uno पर)sizeof(digitalPins[0])= 2 bytes- 10 / 2 = 5 elements
Arduino में sizeof() कैसे काम करता है
sizeof() C/C++ में built-in है और बताता है कि कोई variable या array मेमोरी में कितने bytes occupy करता है। यह compile time पर evaluate होता है।
विभिन्न Data Types के साथ sizeof()
| Data Type | Arduino Uno/Nano (AVR) | Arduino Due / ESP32 |
|---|---|---|
bool / byte / char | 1 byte | 1 byte |
int | 2 bytes | 4 bytes |
long | 4 bytes | 4 bytes |
float / double | 4 bytes | 4 bytes / 8 bytes |
| Pointer | 2 bytes | 4 bytes |
Arduino में 2D Array का आकार निकालना
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int rows = sizeof(matrix) / sizeof(matrix[0]); // 3
int cols = sizeof(matrix[0]) / sizeof(matrix[0][0]); // 4sizeof() की सामान्य गलतियाँ
गलती 1: Function के अंदर sizeof() का उपयोग
जब array को function में pass किया जाता है, C++ इसे pointer में बदल देता है। sizeof() तब pointer का आकार लौटाता है।
// ❌ गलत
void printArray(int arr[]) {
int len = sizeof(arr) / sizeof(arr[0]); // Uno पर 1 लौटाता है!
}
// ✅ सही — length को parameter के रूप में pass करें
void printArray(int arr[], int len) {
for (int i = 0; i < len; i++) {
Serial.println(arr[i]);
}
}गलती 2: Element size से विभाजित करना भूलना
// ❌ गलत
int totalPins = sizeof(digitalPins);
// ✅ सही
int totalPins = sizeof(digitalPins) / sizeof(digitalPins[0]);गलती 3: सभी बोर्ड पर समान byte size मानना
int AVR बोर्ड पर 2 bytes है लेकिन 32-bit बोर्ड पर 4 bytes। हमेशा hardcoded number की जगह sizeof(arr[0]) का उपयोग करें।
सर्वोत्तम अभ्यास: Variable में Array का आकार Define करें
const int NUM_PINS = 5;
int digitalPins[NUM_PINS] = {2, 3, 4, 5, 6};ARRAY_LENGTH Macro बनाएँ
#define ARRAY_LENGTH(arr) (sizeof(arr) / sizeof(arr[0]))सारांश
Arduino (C++) में .length() property नहीं होती। उपयोग करें:
int length = sizeof(array) / sizeof(array[0]);sizeof()bytes लौटाता है, elements नहीं- हमेशा
sizeof(array[0])से विभाजित करें - Functions के अंदर यह फॉर्मूला काम नहीं करता (pointer decay)
- 2D arrays के लिए rows और columns अलग-अलग निकालें