티스토리 뷰

카테고리 없음

혼공C 6주차 미션

positivenumber 2019. 11. 18. 23:20

혼공 6주차 기본미션

포인터 내용 블로깅 하기

 

메모리의 주소 값을 이용하는 '포인터'

 

포인터 개념이란, 선언된 블록({ }) 안에서만 사용할 수 변수와는 다르게 사용 범위를 벗어난 경우도 데이터를 공유할 수 있는 새로운 방법이다.

 

포인터  또한 변수들처럼 선언하고 사용하되, 선언할 때 앞에 *를 붙인다. *는 포인터임을 표시하는 기호. 그 뒤에 써야 하는 자료형은 변수의 자료형을 적는다.(int형 변수의 주소를 저장할 땐 int를, double형 변수의 주소를 저장할 땐double을)

 

  • 포인터를 선언하는 방법

 

int *pa;

(주소 위치에 있는 변수의 자료형)(포인터 기호)(포인터 이름)

 

  • 포인터에 주소를 할당하는 방법

 

pa = &a;

(포인터 이름)(주소 연산자)(변수명)

 

이제 포인터 pa는 변수 a가 메모리 어디에 할당되었는지 그 위치를 저장하고 있으며, 이렇게 포인터가 어떤 변수의 주소를 저장한 경우 '가리킨다' 라고 표현. pa -> a 처럼 화살표로 간단히 표현한다.

 

pa -> a

 

포인터가 가리키는 변수를 사용할 때는 포인터에 특별한 연산자를 사용하는데, 이를 간접 참조 연산자(*) 라고 한다. 또는 포인터 연산자 라고도 한다.

 

*pa == a

 

포인터는 주소를 저장하는 일정한 크기의 메모리 공간이기에 언제든지 다른 주소를 저장하고 포인터끼리 대입할 수 있다. 그러나 일반 변수와는 달리 대입 연산에 엄격한 기준이 적용된다.

 

  • 주소와 포인터의 차이

주소는 변수에 할당된 메모리 저장 공간의 시작 주소 값 자체이고, 포인터는 그 값을 저장하는 또 다른 메모리 공간이다. 따라서 특정 변수의 주소 값은 바뀌지 않지만 포인터는 다른 주소를 대입하여 그 값을 바꿀 수 있다.

 

한마디로 주소는 상수, 포인터는 변수.

따라서 두 포인터가 같은 주소를 저장하는 일도 가능하다.

 

  • 주소와 포인터의 크기

포인터의 크기는 저장할 주소의 크기에 따라 결정된다. 모든 주소와 포인터는 가리키는 자료형과 상관없이 그 크기가 같다. (sizeof 연산자로 확인 가능)

 

  • 포인터의 대입 규칙

포인터는 가리키는 자료형이 일치할 때만 대입할 수 있다.

 

int *p;
double *pd;
pd = p; (X)

 

 

마지막 미션이니만큼 미리미리 해서 올렸으면 좋았을텐데 그렇지 못해 아쉬움이 남는다. 그래도 6주동안 마감 맞춰 블로깅 하는 동안 열심히 했다는 뿌듯함이 남아 좋다. 3기가 열린다면 이번엔 파이썬으로 도전해볼 생각. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함