메뉴 닫기

정보처리기사 – C 언어 포인터 공식 1편

안녕하세요~ ^^

오늘은 C 언어 포인터에 대해 알아보도록 하겠습니다~

이번 글에서는 실무에서 사용하는 포인터보다는 정보처리기사 시험에 자주 출제되는 포인터 유형을 중심으로 다뤄보려고 합니다!

포인터의 원리에 대해 자세히 설명하는 글이라기보다는 시험 문제를 풀때 공식 및 풀이 방법으로 위주로 정리 하였으니 가볍게 참고하시면 좋을 것 같습니다. 


일반 포인터

가장 기본 포인터 입니다.  *은 따라가서 값 가져오기.  &는 주소 얻기 입니다. 

*p == p[0] == p 의 첫번째 문자 반환 

아래 이미지 처럼  *p 와 p[0] 은 같은 값을 출력하게 됩니다. 문자열의 경우도 마찬가지입니다. 

p == p + 0 == &p[0] == 문자열 전체

하지만 예외로 뒤에 산수가 따라올 경우 첫번째 문자를 반환합니다. 이점 주의하세욥!

*array[1] == **(array + 1) == *(&b) == b

**array + 1 == *array[0] + 1 == a + 1

아래 이미지 에서 *을 두개를 쓰는 이유는 포인터의 포인터를 타기 때문입니다. 
**array == *array[0] == *(&a) == a  이런식으로 풀 수 있습니다. 

*array == array[0] == 배열의 첫번째 값

*(array[1]+2) == array[1][2] == 두번째 배열의 세번째 글자

array[1] 이 Grape 를 가리키구요. 여기서 + 2 와 [2] 는 동일하게 사용됩니다. 그래서 Grape 에  세번째인 a 를 가리켜서 값으로 a 가 나오게 됩니다. 

*(array + 1) == array[1] == 배열의 두번째 값

array[1] 이 &b 를 가리키기 때문에 &b 의 값인 주소가 나온것이지 다른 수나 글자일 경우 해당 값이 나온다고 생각하시면 됩니다. 

 

초초초 요약본

급하신 경우 아래 공식을 외워가세용~ 도움이 될겁니다~!

  • *p == p[0] == p 의 첫번째 문자 반환 
  • p == p + 0 == &p[0] == 문자열 전체 (뒤에 산수가 따라올 경우 첫번째 문자)
  • *array[1] == **(array + 1) == *(&b) == b
  • **array + 1 == *array[0] + 1 == a + 1 
  • *array == array[0] == 배열의 첫번째 값
  • *(array[1]+2) == array[1][2] == 두번째 배열의 세번째 글자
  • *(array + 1) == array[1] == 배열의 두번째 값

 

다음 2편에서는 다른 포인터의 활용 방법과 구조체 내 포인터 등에 대해 알아보도록 하겠습니다. 

참고로 예시 이미지의 경우 MyCompiler C 컴파일러를 이용하여 작성하였습니다.

예제 코드를 함께 첨부하지 않은 이유는 직접 입력해 실행해보는게 학습효과가 크다고 생각했기 때문입니다. 

이번 글에서 정리한 공식들을 충분히 이해한 후 문제를 풀어보신다면 조금 더 수월하게 접근하실 수 있을 것입니다!

 

모두 좋은 결과 있으시길 바라며, 정보처리기사 준비하시는 분들 화이팅입니다!!!!!

제 글을 읽어주셔서 감사합니다. 행복하시고 건강하세요!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다