Arduino 함수에서 배열 반환
이 튜토리얼에서는 Arduino의 기존 배열을 수정하여 함수에서 배열을 반환하는 방법에 대해 설명합니다.
Arduino 함수에서 배열 반환
Arduino에서는 주어진 크기로 배열을 초기화할 수 있습니다. 배열을 초기화한 후 함수를 사용하여 배열의 값을 추가하거나 바꿀 수 있습니다.
함수 내부에 배열을 초기화하고 생성한 다음 함수가 호출될 때 반환하려면 malloc()
및 free()
함수를 사용하여 수행되는 동적 메모리 할당을 사용해야 합니다. 우리는 또한 Arduino에서 포인터를 사용해야 합니다.
문제는 동적 메모리 할당을 사용하여 함수에서 배열을 만들고 반환하는 경우 메모리 누수 및 댕글링 포인터로 인해 결과가 변경될 수 있다는 것입니다. 따라서 함수에서 전체 배열을 반환하는 것보다 함수를 사용하여 배열을 초기화하고 값을 변경하는 것이 가장 좋습니다.
예를 들어 일정한 정수 크기로 배열을 초기화한 다음 배열 값을 변경하는 함수를 생성해 보겠습니다. 아래 코드를 참조하십시오.
const int size = 10;
int MyArray[size];
void CreateArray() {
for (int i = 0; i < size; i++) {
MyArray[i] = i;
}
}
void setup() {
Serial.begin(9600);
CreateArray();
for (int i = 0; i < size; i++) {
Serial.println(MyArray[i]);
}
}
void loop() {}
출력:
0
1
2
3
4
5
6
7
8
9
위의 코드에서는 배열을 초기화하기 위해 상수 정수를 사용해야 하기 때문에 상수 정수를 사용하여 배열을 초기화했으며, 상수 정수를 사용하지 않으면 Arduino가 오류를 표시합니다. 배열에 값을 저장하지 않았지만 배열을 초기화할 때 값을 저장할 수도 있습니다.
배열에 값을 저장하지 않으면 배열은 NULL
값으로 초기화됩니다. 배열에 값을 저장하기 위해 CreateArray()
함수를 만들었습니다.
CreateArray()
반환 유형은 void
입니다. 즉, 배열에 값만 저장하기를 원하기 때문에 아무 것도 반환하고 싶지 않습니다. 무언가를 반환하려면 반환 유형을 변경할 수 있습니다. 예를 들어 정수 값을 반환하려면 int
반환 유형을 정의할 수 있습니다.
for
루프를 사용하여 배열 내부에 값을 저장했지만 수동으로 배열 내부에 값을 저장할 수도 있습니다. 배열을 인쇄하기 전에 배열 값을 변경하기 위해 setup()
함수 내에서 CreateArray()
함수를 호출했습니다.
우리는 Arduino의 직렬 모니터를 사용하여 어레이의 값을 인쇄했으며 출력에서 볼 수 있듯이 어레이에 10개의 값이 존재합니다.