글
■ 배열에 관한 이론정리는 생략 하도록 하겠습니다.
(1) 배열을 포인터로 접근하기
: 배열은 포인터와 밀접한관계를 가지고 있다.
- "*arr = 10"의 의미는 "arr[0] = 10"과 같은 의미(arr이 가지고 있는 어드레스가 arr[0]의 어드레스이기 때문)
(2) 포인터 연산
: 포인터 연산을 통해 배열의 다른 인자로 접근할 수 있다.
- 결과를 보면 int 타입의 변수이기 때문에 p++ 의 결과로 4바이트가 늘어난 것을 확인 할 수 있다. (+1의 의미는 1*타입크기)
(3) 배열과 포인터의 차이
: 포인터는 ++ 이나 + 1 연산이 가능 하지만, 배열자체의 연산은 불가능 하다.
- 배열 arr은 모조건 [0]번째 원소에 대한 어드레스만을 가지고 있다.
- [1], [2] 같은 다른 원소에 대한 위치 역시 [0]번째의 어드레스를 기반으로 해서 계산한다.
- 따라서 그 기반이 되는 arr의 어드레스 값은 절대 수정할 수 없다.
- (4)을 참고하자
(4) 포인터를 통한 배열 원소 접근
- 배열의 원소 arr[0] ~ arr[4]에 대한 접근은 포인터 연산을 써서 *(arr + 0) ~ *(arr + 4) 할 수 있다.
- 배열의 원소를 다루는 arr[n]형식 역시 내부적으로는 이러한 포인터 연산을 통해 이루어 지고 있는 것이다.
" 배열은 제한된 용도의 포인터 "
※ 참고자료 : http://2xx195.tistory.com/7
■ 배열에 관한 이론정리는 생략 하도록 하겠습니다.
(1) 배열을 포인터로 접근하기
: 배열은 포인터와 밀접한관계를 가지고 있다.
[CODE] #include<stdio.h> void main() { int arr[5]; *arr = 10; printf("%d\n", A[0]); } [RESULT] 10 |
- "*arr = 10"의 의미는 "arr[0] = 10"과 같은 의미(arr이 가지고 있는 어드레스가 arr[0]의 어드레스이기 때문)
(2) 포인터 연산
: 포인터 연산을 통해 배열의 다른 인자로 접근할 수 있다.
[CODE] #include<stdio.h> void main() { int var; int *p; *p = &var; printf("%d\n", p); p++; printf("%d\n", p); } [RESULT] 1245052 1245056 |
- 결과를 보면 int 타입의 변수이기 때문에 p++ 의 결과로 4바이트가 늘어난 것을 확인 할 수 있다. (+1의 의미는 1*타입크기)
(3) 배열과 포인터의 차이
: 포인터는 ++ 이나 + 1 연산이 가능 하지만, 배열자체의 연산은 불가능 하다.
[CODE] #include<stdio.h> void main() { int arr[5]; arr++; *arr = 10; printf("%d\n",arr[1]); } [RESULT] error!! |
- 배열 arr은 모조건 [0]번째 원소에 대한 어드레스만을 가지고 있다.
- [1], [2] 같은 다른 원소에 대한 위치 역시 [0]번째의 어드레스를 기반으로 해서 계산한다.
- 따라서 그 기반이 되는 arr의 어드레스 값은 절대 수정할 수 없다.
- (4)을 참고하자
(4) 포인터를 통한 배열 원소 접근
[CODE] #include<stdio.h> void main() { int arr[5]; *arr = 10; *(arr+1) = 20; *(arr+2) = 30; *(arr+3) = 40; *(arr+4) = 50; printf("%d %d %d %d %d\n",arr[0],arr[1],arr[2],arr[3],arr[4]); } [RESULT] 10 20 30 40 50 |
- 배열의 원소 arr[0] ~ arr[4]에 대한 접근은 포인터 연산을 써서 *(arr + 0) ~ *(arr + 4) 할 수 있다.
- 배열의 원소를 다루는 arr[n]형식 역시 내부적으로는 이러한 포인터 연산을 통해 이루어 지고 있는 것이다.
" 배열은 제한된 용도의 포인터 "
※ 참고자료 : http://2xx195.tistory.com/7
'P rogramming > C Language' 카테고리의 다른 글
문자열과 포인터 이론 (2) | 2011.10.26 |
---|---|
2차원 배열과 포인터 이론 (4) | 2011.10.26 |
포인터 이론 (0) | 2011.10.26 |
2차원 배열의 연산 (0) | 2011.10.25 |
2차원 배열의 포인터 (0) | 2011.10.25 |
RECENT COMMENT