C언어 배열 주소값과 값 표현방식
- 프로그래밍/C/C++
- 2018. 6. 27.
C언어 배열 주소값과 값 표현방식
이번에는 배열 주소값과 값 표현 방식에 대해서 알아보겠습니다.
배열 주소값과 표현 방식이 너무나 많이 있습니다.
이것을 쉽게 정리해서 보여드리도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdio.h> int main() { int array[3] = { 10,20,30 }; int arr[2][2] = { 10,20,30,40 }; //1차원 배열 주소값 표현 방법 printf("%x %x %x\n", array + 0, array + 1, array + 2); printf("%x %x %x\n", &array[0], &array[1], &array[2]); printf("\n"); //1차원 배열 값 표현방법 printf("%d %d %d\n", array[0], array[1], array[2]); printf("%d %d %d\n", *(array + 0), *(array + 1), *(array + 2)); printf("\n"); //2차원 배열 주소값 표현 방법 printf("%x %x\n", arr[0], arr[1]); //0행과 1행 대표 주소 printf("%x %x\n", *(arr + 0), *(arr + 1)); //0행과 1행 대표 주소 printf("%x %x %x %x\n", arr[0]+0, arr[0]+1, arr[1]+0, arr[1]+1); printf("%x %x %x %x\n", *(arr + 0 + 0), *(arr + 0) + 1, *(arr + 1) + 0, *(arr + 1) + 1); printf("\n"); //2차원 배열 값 표현 방법 printf("%d %d %d %d\n", arr[0][0], arr[0][1], arr[1][0], arr[1][1]); printf("%d %d %d %d\n", *arr[0] + 0, *arr[0] + 1, *arr[1] + 0, *arr[1] + 1); // 이렇게 할시에 arr[0]번째 값을 찾아서 +를해줌 printf("%d %d %d %d\n", **(arr + 0) + 0, **(arr + 0) + 1, **(arr + 1) + 0, **(arr + 1) + 1); // 이렇게 할시에 arr[0]번째 값을 찾아서 +를해줌 printf("%d %d %d %d\n", *(arr[0] + 0), *(arr[0] + 1), *(arr[1] + 0), *(arr[1] + 1)); return 0; } | cs |
< 출력 >
dff7d0 dff7d4 dff7d8 dff7d0 dff7d4 dff7d8 10 20 30 10 20 30 dff7b8 dff7c0 dff7b8 dff7c0 dff7b8 dff7bc dff7c0 dff7c4 dff7b8 dff7bc dff7c0 dff7c4 10 20 30 40 10 11 30 31 10 11 30 31 10 20 30 40 | cs |
소스와 출력 결과를 분석해보면서 같이 보시면 이해가 될 것이다.
활용법과 이건 이렇게 쓰이고 저건 저렇게 쓰이네?라는 것을 알게 될 것이다.
배열과 포인터는 연관이 있으니 잘 알아두면 편하다. 이것을 정확히 알아야 포인터 배울 때 쉽게 배울 수 있다.
이 글을 통해서 값 표현방식과 주소값 표현방식을 정확히 알았으면 한다.
이 글은 여기서 마치도록 하겠다.