반응형
포인터의 이해!
포인터도 특정한 변수를 가지는 변수다.
예를 들어서 설명하겠다.
검지 손가락을 펴서 앞에 있는 집을 가르켜 보아라. 그 안에는 사람이 살고 있을 것이다.
당신이 가르키는 행위 자체가 말 그대로 포인터다.
손가락 : 포인터 변수
집 주소 : 포인터가 가르키는 메모리의 주소 값
집안의 사람 : 할당된 메모리 주소에 들어가 있는 값
포인터 변수는 메모리 상에 위치한 특정한 데이터의 주소 값을 저장하는 변수이다.
메모리(memory)
- 컴퓨터 메모리 = 데이터 보관 장소
- 모든 변수는 주소를 가진다.
포인터(pointer)
- 메모리 주소를 값으로 가지는 변수.
예제
1. 변수 선언
2. 포인터 연산자 &, *
int i, *pi, j // 정수형 변수 i,j, 정수형 포인터 변수 pi 선언.
// 포인터 연산자 *는 변수 앞에 붙을 경우 해당 변수를 포인터 변수로 생각한다.
pi = &i; // 포인터 연산자 &는 변수명 앞에 붙을 경우 변수의 메모리 주소를 가져온다.
i = 10; // 변수 i에 직접 10이라는 값을 넣는다.
*pi = 10; // i의 주소를 가르키는 포인터 변수 pi에 10을 넣어
// indirect access로 변수 i에 10이라는 값을 넣는다.
// 두 식은 같은 작업을 하는 것이다.
j = *pi; // 포인터 연산자 *를 이용하여 주소안의 값을 불러 와서 적용시킬 수도 있음.
// j = 10이됨.
pi = NULL; // 포인터 변수(pi) 주소 초기화.
이렇게 포인터 변수를 만들 수 있다. 이때 pi는 정수형 데이터 주소값을 저장할 수 있다.
*pi를 이용해 주소값에 값을 집어넣을 수도 있고,
포인터 변수 pi가 가리키는 주소값의 값을 불러올 수도 있다.
&는 변수명 앞에 붙을 경우 변수의 메모리 주소를 가져온다.
[출처]
https://www.geeksforgeeks.org/c-programming-language/
https://whatisthenext.tistory.com/152
https://ideveloper2.tistory.com/4
반응형
'컴퓨터 언어 > C\C++' 카테고리의 다른 글
[c 언어] fputs 함수란. (0) | 2020.04.04 |
---|---|
[c 언어] 배열에 원소 값 삽입하기 ( memmove() 이용하기 ) (0) | 2020.04.03 |
[c언어] rand(), srand() 랜덤함수는 무엇인가? (난수 생성) (0) | 2020.04.02 |
[c언어] fprintf(stderr, "error!"); 에 대하여. (0) | 2020.04.02 |
[C 언어] pointer 이용해서 함수 구현하기(pythagoras, 원의 면적) (0) | 2020.03.16 |