[정보처리기사 실기] C언어 포인터 이해하기

bonnie·2021년 6월 24일
0

포인터에 대해 전혀 이해 못한 것이 아님에도 불구하고 문제로만 풀면 꼭 틀린다...완전히 이해 못했기 때문이겠지ㅠㅠ
다시 한번 마음을 가다듬고 도저어언💪

1차원 배열에서 배열명은 주소값을 나타낸다.

int a[2] = {1, 2};
int *p;

p = a; 와 같이 사용 할 수 있다.
또한 배열의 값에 접근하기 위해서 a[0]과 같이 사용하고 이 값의 주소값을 구하기 위해 '&'를 붙여준다. 즉 p = &a[0]; 와 같이 사용 할 수 있다는 것!

마찬가지로 2차원 배열에서는 1차원 배열의 a[0]값이 곧 주소값이 된다.
그리고 배열의 값에 접근하기 위해서는 a[0][0]와 같이 사용하고, 역시 마찬가지로 p = &a[0][0]; 을 사용 할 수 있다.

문제를 예로 들어보자.

#include <stdio.h>

void main() {
	int a[2][2] = {{10,20},{30,40}};
    	int i;
    	int *p;
        
        p = a[0];
        for(i=0; i<2; i++){
        	printf("%d ", *(p+i));
        }
}

풀이

p = a[0]은 결국 {10,20}의 주소값을 의미하고 반복문 안에서 i가 0일 때는 *p 값인 10을, i가 1일 때는 *(p+1) 값인 20을 출력하기 때문에 결과는 10 20이 될 것이다.

profile
괴발🐱개발🐶

0개의 댓글