티스토리 뷰
이번 포스팅을 마지막으로 포인터에 대한 기본적인 기초 개념에 대해 마무리하겠습니다.
위와 같이 입력을 해 줍니다.
여러분도 해보시면 아시겠지만 Build하면 에러가 없다고 뜰 것 입니다. 근데 실행을 시켜보면 이렇게 Debug Error 라는 에러창이 뜰거에요 이렇게 뜨는 이유는 바로
int형 변수 a, b, c 에대가 값을 초기화 해주지 않아서!
왜 초기화를 안해주면 이러한 문제가 생기는건가요?
앞에서도 말했따 싶이 포인터 변수를 사용한다는 것은 그 주소를 참조한다는 것 입니다.
포인터가 주소를 참조 할때 그 주소가 가지고 있는 변수가 메모리의 공간이 존재하지 않는다면 포인터 변수는 참조를 못합니다. 따라서 위와같이 에러가 나는 것 입니다.
그래서 밑에와 같이 0으로 초기화를 해줍니다.
이제 디버그 에러는 안타나탑니다. 근데 ip에 이상한 값이 출력이 되네요
이와 같이 변경을 해 주면 정상적으로 출력이 됩니다.
ip는 포인터 변수입니다. 그래서 ip가 참조한 int형 a변수의 주소!
이말은 즉, ip메모리 공간에다가 &a의 주소를 저장한다는 것 입니다.
따라서 ip의 값을 변경하면 자동적으로 a의 값도 변경됩니다.
좀더 확실하게 개념을 잡기 위해 조금더 알아보도록 할게요
포인터 변수 ip에다가 b의 주소를 저장해 줍니다.
그리고 포인터 변수 ip에 30을 저장합니다.
이말은 즉, 현재 ip에는 &b가 저장되 있습니다.
*ip = 30 이거는 *&b = 30 이거랑 같은 말 입니다.
따라서 &b의 주소에 30을 저장합니다.
이처럼 a는 그대로 있고 b와 ip가 30인것을 확인할 수 있습니다.
'허접한 프로그래밍 > C언어' 카테고리의 다른 글
배열이란? (0) | 2013.12.09 |
---|---|
[기말고사 대비] 포인터 함수 이용 (0) | 2013.12.09 |
[기말고사 대비]포인터 변수의 사용예 part1 -기초- (0) | 2013.12.09 |
[기말고사 대비] 포인터란 무엇인가? (0) | 2013.12.09 |
C언어 math.h 함수 정리 (0) | 2013.11.12 |