[C언어] 포인터 이해하기
안녕하세요. 지토우에요.
오늘은 특이한 변수를 배워보겠습니다.
바로 포인터, 혹은 포인터 변수라고 부르는 아이인데요.
개념적으로 잘 이해하고 계셔야 합니다!
1. 포인터란?
우리는 포인터 변수에 대해 배우면서 & 연산자와 * 연산자를 많이 사용하게 됩니다.
이름부터 알아볼까요?
& : Ampersand (앰퍼센드)
* : Asterisk(아스테리스크)
입니다.
앞서 이 연산자들에 대해 배웠습니다.
& 연산자를 통해 주소를 알 수 있었고 * 연산자를 통해 주소에 저장된 값을 참조할 수 있었지요?
이 친구들을 포인터까지 확장시킵시다.
포인터 변수란 주소를 저장하는 변수 입니다.
C언어의 장점 중 하나가 바로 포인터인데요.
기존의 변수는 데이터를 저장하지만 포인터는 메모리 공간의 주소를 저장합니다.
포인터 변수가 주소를 저장하려면 변수의 주소를 알야아 하는데
변수 이름 앞에 & 연산자를 붙이면 해당 변수의 시작 주소를 반환합니다.
더 나아가서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조하기 위해서는 * 연산자를 사용하지요.
앞서 배운것들을 복습해볼까요?
4행, 5행에서는 변수 num1에 3을 저장하고,
변수 num2에 문자 A를 저장합니다.
7,8행에서 &num1(변수 num1 주소, 23f848), num1, *&num1(&num1에 저장된 값 참조, 3), &num2(변수 num2의 주소, 23f83f), num2, *&num2(&num2에 저장된 값 참조, A)를 출력합니다.
num1과 *&num1은 같은 메모리 공간입니다.
num2와 *&num2도 같은 메모리 공간입니다.
아래는 위 소스의 결과값 입니다.
'IT > C언어' 카테고리의 다른 글
발판 만들기 프로그램 (0) | 2017.11.13 |
---|---|
[C언어] 포인터 변수의 선언 (3) | 2017.08.11 |
[C언어] 1차원 배열의 주소와 값의 참조 (4) | 2017.08.07 |
[C언어] 배열 선언 시 주의할 점 (0) | 2017.08.07 |
[C언어] 배열에 데이터 저장하기 (0) | 2017.08.04 |