|
우선 제가 배운걸 애기 하자면...
예를 들어 아래 프로그램을 보겠습니다.
제가 배운거는 아래처럼 포인터를 초기화 하면 포인터 in의 주소는 inp가 정수형이므로4byte씩 증가 합니다.즉 in의 주소가 1000이라면 in+1은 1004, in+2는 1008,in+3은 1012..로 4씩 증가하는걸로 압니다.
본론으로 들어가서............
아래 소스를 컴파일 시키면 이상한 16진수가 나오면서 에러 메세지가 뜨는데 왜 그런건가요.??
참고로 이런 메세지가뜨네요..
thread stopped...... fault access violation at 0x406ec2:read of address 0x5
어쩔때는 컴이 아애 맛이 가버려요..ㅡㅡ 보통 이런 경우는 포인터에 주소를 지정안했을때 생기는 현상으로 알고있는데 전 분명히 위에서 처럼 포인터 초기화를 했는데...
이상한건 아래에서 프로그램처럼 in의 i번째에 입력과 출력을을 안하고,
in에만 입력하고 출력을 하면 에러가 않뜨네요..ㅡㅡ;
#include <stdio.h>
#include <conio.h>
void main(void)
{
int inp, i = 0;
int *in = &inp;
clrscr();
for(i=0;i<5;++i){
scanf("%d",(in+i) ); printf("\n : %d", *(in+i)); }
getch();
}
제가 잘못알고 있는 포인터 지식이 있다면 알려주십시요. 그리고 위 프로그램이 에러나는 원인좀 알려주세요..
|