배열은 인덱스 번호로 접근되는 변수의 모임이다.
아두이노의 기반인 C++ 프로그램 언어의 배열은 복잡해질수 있지만, 단순한 배열 사용은 비교적 간단하다.
배열 생성(선언)
아래 방법 모두 배열을 생성(선언)하는 타당한 방법이다.
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";
myInts 에서 처럼 초기화 하지 않고 배열을 선언할 수 있다.
myPins에서 명시적으로 크기를 선택하지 않고 배열을 선언한다. 컴파일러는 요소를 세고 적절한 크기의 배열을 만든다.
마지막으로 배열을 mySensVals에서 처럼 초기화와 크기 지정할 수 있다. char 형 배열을 선언할 때, 널 문자를 저장하기 위해 초기화 보다 하나 더 요소가 필요하다.
배열에 접근하기
배열은 0 인덱스인데, 즉, 위의 배열 초기화를 참조하면, 배열의 첫 요소는 인덱스 0에 있으므로, 따라서
mySensVals[0] == 2, mySensVals[1] == 4, 등등.
이것은 또한 10개 요소를 가진 배열에서 인덱스 9는 마지만 요소임을 뜻한다. 따라서:
int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11};
// myArray[9] contains 11
// myArray[10] is invalid and contains random information (other memory address)
이런 까닭에 배열에 액세스할 때 조심해야 한다. 배열 끝을 지나서 액세스(선언한 배열 크기 - 1 보다 큰 인덱스 번호 사용)하면 다른 목적으로 사용중인 메모리를 읽는다. 이 위치에서부터 읽는 것은 무효 데이터를 얻는 것 말고는 아무 일을 안 할 거다. 임의 메모리 위치에 쓰는 것은 분명 나쁜 생각이며, 충돌 또는 프로그램 오작동 같은 불행한 결과가 될 수 있다. 찾기 어려운 버그가 될 수 있다.
BASIC, 자바와 달리, C++ 컴파일러는 배열 액세스가 선언한 배열 크기 법적 범위 안에 있는지 체크하지 않는다.
값을 배열에 할당:
mySensVals[0] = 10;
배열에서 값을 추출:
x = mySensVals[4];
배열과 for 루프
배열은 종종 for 루프 안애서 다루어지며, 여기서 루프 카운터가 각 배열 요소의 인덱스로 사용된다. 예를들어, 시리얼 포트를 통해 배열의 요소를 인쇄하려면, 아래와 같이 할 수 있다:
int i;
for (i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}
We care about the privacy and personal data of our users.
To continue, please give us your consent:
Please confirm that you have read the privacy policy
Thank you for subscribing!
Curious to learn more?
Are you also a teacher, student, or professional that loves using Arduino in your day-to-day activities?
Then keep up-to-date with either our STEM or Professional monthly newsletters.
Arduino weekly newsletter (already subscribed)
Educators can benefit from the ever growing tech that shapes our environment through fun cool projects.
Why not awe your boss with highly innovative ways to help keep your enterprise connected at no extra cost?
Arduino Survey
We'd like to get to know you little better.
Please help us improve by answering this super short optional survey.