104. 포인터

alpaka·2024년 1월 31일
0

정보처리기사

목록 보기
108/161
post-thumbnail

포인터와 포인터 변수

  • 포인터는 변수의 주소를 말하며, C언어에서는 주소를 제어할 수 있는 기능을 제공한다.
  • C언어에서 변수의 주소를 저장할 때 사용하는 변수를 포인터 변수라 한다.
  • 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 를 붙인다.(int a;)
  • 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 번지 연산자 &를 붙인다.(a = &b;)
  • 실행문에서 포인터 변수에 간접 연산자 를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말한다.(c= a;)
  • 포인터 변수는 필요에 의해 동적으로 할당되는 메모리 영역인 힙 영역에 접근하는 동적 변수이다.
  • 포인터 변수의 용도
    • 연결된 자료 구조를 구성하기 위해 사용한다.
    • 동적으로 할당된 자료 구조를 지정하기 위해 사용한다.
    • 배열을 인수로 전달하기 위해 사용한다.
    • 문자열을 표현하기 위해 사용한다.
    • 커다란 배열에서 요소를 효율적으로 저장하기 위해 사용한다.
    • 메모리에 직접 접근하기 위해 사용한다.
    • 예를 들어, a 변수에 100을 저장시키고, a 변수의 주소를 포인터 변수 b에 기억시켰다면 다음 그림과 같이 표현하고 말할 수 있다.
    • a는 메모리의 4번지에 대한 이름이다.
    • a 변수의 주소는 4다.
    • a 변수에는 100이 기억되어 있다.
    • 4번지에는 100이 기억되어 있다.
    • &a는 a 변수의 주소를 말한다. 즉 &a는 4다.
    • 포인터 변수 b는 a 변수의 주소를 기억하고 있다.
    • 포인터 변수가 가리키는 곳의 값을 말할 때는 *을 붙인다.
    • *b는 b에 저장된 주소가 가리키는 곳에 저장된 값을 말하므로 100이다.

포인터와 배열

  • 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근할 수 있다.
  • 배열 위치를 나타내는 첨자를 생략하고 배열의 대표명만 지정하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같다.
  • 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용한다.
  • int a[5],*b;
    b = a → 배열의 대표명을 적었으므로 a 배열의 시작 주소인 a[0]의 주소를 b에 저장한다.
    b = &a[0] → a 배열의 첫 번째 요소인 a[0]의 주소(&)를 b에 저장한다.
  • a[0] = *(a+0)
profile
alpaka의 자격증 공부장

0개의 댓글

관련 채용 정보