728x90
1. 배열 이름과 포인터
- 배열 이름: 배열의 이름은 배열의 첫 번째 요소의 주소를 나타냅니다. 예를 들어, arr이라는 배열이 있을 때, arr은 &arr[0]와 같으며, 이는 배열의 첫 번째 요소의 주소입니다.
int arr[3] = {10, 20, 30};
std::cout << "배열의 첫 번째 요소의 주소: " << &arr[0] << std::endl; // arr와 &arr[0]는 동일
std::cout << "배열 이름: " << arr << std::endl; // arr는 첫 번째 요소의 주소를 나타냄
2. 포인터와 배열의 사용
- 포인터를 이용한 배열 접근: 포인터를 사용하여 배열의 요소에 접근할 수 있습니다. 배열의 이름을 포인터처럼 사용할 수 있어, 포인터 연산을 통해 배열 요소에 쉽게 접근할 수 있습니다.
#include <iostream>
int main() {
int arr[3] = {10, 20, 30};
int* ptr = arr; // 배열 이름을 포인터에 저장
for (int i = 0; i < 3; ++i) {
std::cout << "arr[" << i << "] = " << *(ptr + i) << std::endl; // 포인터 연산을 통해 접근
}
return 0;
}
3. 배열과 포인터의 메모리 구조
- 연속적인 메모리: 배열의 요소는 연속적인 메모리 공간에 저장됩니다. 포인터는 이러한 연속적인 메모리 주소를 탐색하는 데 매우 유용합니다.
- 포인터 산술: 포인터는 산술 연산을 지원합니다. 예를 들어, ptr + 1은 ptr이 가리키는 주소에서 다음 요소의 주소로 이동합니다. 이는 배열의 요소를 탐색하는 것과 동일하게 작동합니다.
4. 함수 인자로 배열 전달
- 배열을 포인터로 전달: C++에서 배열을 함수의 인자로 전달할 때, 배열 이름은 포인터로 변환됩니다. 즉, 배열을 함수에 전달하면 배열의 첫 번째 요소의 주소가 전달됩니다.
#include <iostream>
// 배열을 포인터로 받아들이는 함수
void printArray(int* arr, int size) {
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " "; // 포인터를 통해 배열 요소 접근
}
std::cout << std::endl;
}
int main() {
int arr[3] = {10, 20, 30};
printArray(arr, 3); // 배열 이름을 전달
return 0;
}
5. 포인터와 2차원 배열
- 2차원 배열: 2차원 배열은 배열의 배열로 생각할 수 있으며, 포인터를 사용하여 접근할 수 있습니다. 2차원 배열의 첫 번째 요소는 포인터로 표현할 수 있습니다.
#include <iostream>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*ptr)[3] = arr; // 2차원 배열을 가리키는 포인터
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
std::cout << ptr[i][j] << " "; // 포인터를 통해 2차원 배열 접근
}
std::cout << std::endl;
}
return 0;
}
결론
C++에서 포인터와 배열은 매우 밀접하게 연결되어 있으며, 배열의 이름은 포인터로 사용될 수 있습니다. 포인터를 사용하면 배열의 요소에 직접 접근하고 조작할 수 있으며, 함수에 배열을 전달할 때 유용하게 활용
728x90
'반도체 > C++' 카테고리의 다른 글
C++ enum 열거형 (0) | 2024.12.04 |
---|---|
38. C++ 화살표 연산자 (0) | 2024.09.04 |
35. C++에서의 포인터 개념 (0) | 2024.09.03 |
34.1 사원 관리 프로그램 추가 C++ (0) | 2024.09.03 |
34. 사원관리 프로그램 C++ (0) | 2024.09.03 |