문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들

[C언어] 일반변수와 포인터변수의 차이 간단하게 알아보기

게임이 더 좋아 2020. 2. 2. 10:52
반응형
728x170

오늘은 일반변수와 포인터변수의 차이를 알아보는 시간을 가지려고 하는데

변수를 모른다면 변수에 대한 글을 참고바란다.(쓸 예정)

 


 

우선 코드를 보자.

 

 

dev c++로 작성했다.

 

 

결과가 어떻게 나올지 예상이 되면 이 글을 볼 필요가 없다.

컴파일하면 어떻게 나올까??

 

 

 

실행결과

 

 

예상했던 대로 나왔나 확인해보자

 

 

아니라면 이제부터 다시 천천히 라인별로 따라가보자

 


우선 라인 5부터 7까지 컴파일해보면

 

 

 

저런식으로 메모리에 저장이된다.

int 자료형의 변수가 만들어지고 값이 들어가고

int 자료형을 가리키는 포인터변수가 만들어지고 그 가리키는 변수의 주소값을 값으로 가진다.

포인터 변수 자체에도 주소값이 있다.

 

 


 

그렇다면 라인 9-10를 실행하면??

 

라인 9-10 :빨간색이 바뀐부분

 

*pa와 pa의 차이점을 보자면

 

*pa는 pa가 가리키는 변수를 뜻한다.

pa는 pa 자체를 말한다.

 

그래서 j의 값이 i에 대입되었고 pb의 값이 pa에 대입되었다.

(i의 주소를 가리키는 값이 사라졌다.)

 

*pa, *pb 둘다 j를 가리키게 되었다.


 

 

그래서 마지막으로 나머지 라인을 컴파일하면??

 

 

 

다시말해서 (*pa)++, (*pb)++ 때문에 j가 22가 되었고 출력도 그렇게 되었다. 

 

C언어에서 포인터는 아주 중요한 개념이고 컴퓨터에서도 중요한 개념이다.

차이를 정확히 알고 있기를 바라면서

 

다음 거 공부해보자

반응형
그리드형