c언어 프로그래밍 포인터 변수 선언과 &, * 연산자의 역할
■ C언어에서 변수를 선언하면 메모리의 어느 한 곳에 위치하게 되는데 그곳의 주소를 가져와서 저장할 수 있는 것이 포인터 변수입니다. 이 포인터 변수를 이용하면 메모리에 저장된 변수의 값에 접근할 수도 있고 변경할 수도 있습니다. 이때 사용되는 연산자들이 있는데 변수의 값이 저장된 메모리 주소를 반환하는 연산자가 "&"이고, 그 변수의 주소에 직접 접근할 수 역할을 하는 게 "*" 연산자 입니다. 예제에서 이것들을 이용해보겠습니다.
먼저 포인터 변수를 선언할 건데요. 선언 방법은 다음과 같습니다.
자료형 * 포인터 변수 이름;
▲ int형 변수 aa를 선언하고 100으로 초기화하고 있는데요. 이 변수의 주소값을 저장할 포인터 변수 pa를 형식에 맞게 선언하고 있습니다. 이제 pa에 aa의 주소를 저장하겠습니다. 이때 사용하는 연산자가 "&"이구요. 이 녀석은 aa의 메모리 주소값을 반환하게 되며 사용방법은 다음과 같습니다.
▲ 포인터 변수 pa에 &연산자를 이용해서 aa의 주소를 저장하고 그 값을 출력하고 있는 모습입니다. 참고로 메모리 주소값을 출력하는 서식문자는 "%p"입니다. 프로그램을 실행해서 확인해보겠습니다.
▲ 이렇게 포인터 변수는 변수의 주소 값을 저장합니다.
다음은 "*"연산자를 이용해서 메모리에 접근해볼 텐데요. 형식은 (*pa)입니다. 즉 pa가 가리키고 있는 aa에 접근해서 그 값을 출력할 수도 있고, 변경할 수도 있습니다. 하나씩 해볼게요.
▲ 먼저 *pa로 aa에 저장된 값 100을 출력하도록 하고 있고, 역시 *pa로 접근해서 200을 대입한 후에 변경된 값을 출력하도록 하고 있습니다. 실행해서 확인해하겠습니다.
▲ 예상한 값들이 출력되는 걸 확인할 수 있습니다. 이렇게 *연산자를 통해서 다음과 같은 [(*pa)=aa]라는 결론을 내릴 수 있는데요. 위 예제에서 *pa 자리에 aa를 넣어주면 똑같은 결과가 실행됩니다.
이렇게 해서 c언어 포인터 변수의 선언, 접근 방법과 그곳에 저장된 값을 변경까지 해봤습니다. 수고하셨어요.