배열이란 무엇인가?
배열은 동일한 데이터 타입의 요소들을 연속적으로 저장하는 자료구조이다. 예를 들어, 정수형 배열은 여러 개의 정수 값을 저장할 수 있다. 배열은 고정된 크기를 가지며, 각 요소는 인덱스를 통해 접근할 수 있다.
int numbers[5] = {1, 2, 3, 4, 5};
위의 코드에서 numbers는 정수형 배열이다. 이 배열은 5개의 정수 값을 저장하고 있다.
배열의 이름과 주소
배열의 이름은 배열의 첫 번째 요소의 주소를 가리킨다. 즉, 배열의 이름을 사용하면 배열의 첫 번째 요소에 대한 메모리 주소를 얻을 수 있다. 이를 통해 배열의 요소에 접근할 수 있다. 예를 들어, C 언어에서 배열의 이름을 사용하여 첫 번째 요소의 주소를 출력해 보겠다.
#include <stdio.h>
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
printf("배열의 이름: %p\n", numbers); //배열의 이름은 첫 번째 요소의 주소를 가리킨다.
printf("첫 번째 요소의 주소: %p\n", &numbers[0]);
return 0;
}
위의 코드에서 numbers는 배열의 첫 번째 요소인 numbers[0]의 주소를 출력한다. 두 출력 결과는 동일한 값을 보여준다.
배열과 포인터의 관계
배열의 이름이 첫 번째 주소를 가리킨다는 사실은 포인터와 밀접한 관계가 있다. 배열의 이름은 포인터처럼 동작하며, 배열의 요소에 대한 포인터 연산을 수행할 수 있다. 예를 들어, 다음과 같이 배열의 요소와 주소에 접근할 수 있다.
#include <stdio.h>
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
printf("두 번째 요소의 주소: %p\n", (numbers + 1)); //포인터 연산을 통해 두 번째 주소에 접근
printf("두 번째 요소: %d\n", *(numbers + 1)); //포인터 연산을 통해 두 번째 요소에 접근
return 0;
}
위의 코드에서 (numbers + 1)은 두 번째 요소의 주소를 출력하며, *(numbers + 1)은 두 번째 요소의 값을 출력한다. 이는 배열의 요소에 대한 접근이 포인터 연산을 통해 가능하다는 것을 보여준다.
결론
배열은 프로그래밍에서 기본적이고 중요한 자료구조이다. 배열의 이름이 첫 번째 요소의 주소를 가리키고, 포인터와 밀접한 관계가 있다는 점을 이해하는 것은 배열을 효과적으로 사용하는 데 큰 도움이 된다.
'Language > C | C++' 카테고리의 다른 글
[C | C++]생성자 오버로딩과 디폴트 인자 (0) | 2024.11.15 |
---|---|
[C | C++]포인터 (0) | 2024.11.13 |