The Circuit Maker
Arduino8 min पढ़ने का समय

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 प्रति int Arduino 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 TypeArduino Uno/Nano (AVR)Arduino Due / ESP32
bool / byte / char1 byte1 byte
int2 bytes4 bytes
long4 bytes4 bytes
float / double4 bytes4 bytes / 8 bytes
Pointer2 bytes4 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]);     // 4

sizeof() की सामान्य गलतियाँ

गलती 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 अलग-अलग निकालें