คำถามของคุณมี 2 ส่วนจริง
1 / ฉันจะประกาศขนาดคงที่ของอาร์เรย์ภายนอกอาร์เรย์ได้อย่างไร
คุณสามารถใช้แมโครได้
#define ARRAY_SIZE 10
...
int myArray[ARRAY_SIZE];
หรือใช้ค่าคงที่
const int ARRAY_SIZE = 10;
...
int myArray[ARRAY_SIZE];
ถ้าคุณเริ่มต้นอาร์เรย์และคุณจำเป็นต้องรู้ขนาดของมันคุณสามารถทำได้:
int myArray[] = {1, 2, 3, 4, 5};
const int ARRAY_SIZE = sizeof(myArray) / sizeof(int);
สองคืออยู่กับชนิดขององค์ประกอบของอาร์เรย์ของคุณในแต่ละที่นี่sizeof
int
2 / ฉันจะมีอาร์เรย์ที่มีขนาดแบบไดนามิก (เช่นไม่รู้จักจนถึง runtime) ได้อย่างไร
เพื่อที่คุณจะต้องจัดสรรแบบไดนามิกซึ่งทำงานบน Arduino แต่โดยทั่วไปจะไม่แนะนำเพราะอาจทำให้ "ฮีป" กระจัดกระจาย
คุณสามารถทำได้ (วิธี C):
// Declaration
int* myArray = 0;
int myArraySize = 0;
// Allocation (let's suppose size contains some value discovered at runtime,
// e.g. obtained from some external source)
if (myArray != 0) {
myArray = (int*) realloc(myArray, size * sizeof(int));
} else {
myArray = (int*) malloc(size * sizeof(int));
}
หรือ (วิธี C ++):
// Declaration
int* myArray = 0;
int myArraySize = 0;
// Allocation (let's suppose size contains some value discovered at runtime,
// e.g. obtained from some external source or through other program logic)
if (myArray != 0) {
delete [] myArray;
}
myArray = new int [size];
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาการกระจายตัวของฮีปคุณสามารถอ้างอิงคำถามนี้