|
안녕하세요.
아스키 코드표에 저장된 숫자와 실제로 그숫자에 저장된 값이 틀린 이유를 잘 몰라서 여쭤볼려고 합니다.
만약에 다음과 같은 문장이 있으면..
#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 로 바뀌게 될지 정말 궁금합니다.
|