|
금윤섭 님이 쓰신 글 :
: 안녕하세요.
: 아스키 코드표에 저장된 숫자와 실제로 그숫자에 저장된 값이 틀린 이유를 잘 몰라서 여쭤볼려고 합니다.
: 만약에 다음과 같은 문장이 있으면..
:
: #include <stdio.h>
:
: main()
: {
: int i=97;
: int *pi=97;
: printf("%c",i);
: printf("%c",*pi);
: }
:
: 여기에서 i는 a 가 출력이 되지만 *pi는 o 가 출력이 되었습니다.
: 이 숫자를 0에서 100정도까지 계속 바꾸어보면
: i는 그 숫자에 해당하는 아스키코드값이 출력되었지만
: *pi는 turbo C 2.0 에서 "Turbo-C-Copyright(c) 1988 Borland Intl.Null pointer assignment Divide error Abnormal program termination" 이 출력이 되었습니다.
: 그러면 아스키코드값은 메모리의 어느부분에서 가져오게 되는 것인가요?
: 그리고 아스키코드의 0과 메모리의 0번지는 똑같이 NULL로 지정이 되어 있는건지..
: 만약에 그렇다면 헤더파일에서 NULL의 값을 0이 아니라 97로 바꾼다면 널값은 아스키코드값의 a로 바뀌는지 아니면 97번지의 o 로 바뀌게 될지 정말 궁금합니다.
:
int *pi=97;
대신
int *pi = &i;
로 포인터의 초기화를 i의 주소(&)로 하시면 되겠죠.
|