포인터 질문입니다.
글쓴이: kernelbomb / 작성시간: 월, 2004/02/16 - 6:40오후
음... 포인터 다 잊어 먹은거 같네요. ㅜㅜ;
다름이 아니오라 아래와 같은 코드에서 출력이 ab로 나와야 하는것
아닌가요? a만 출력되니... 친구넘이 한 번 맞춰 보라고 해서 해봤는데
많이 헷갈리네요. ㅜㅜ;
int main(void) { int *p = (int *)malloc(3 * sizeof(int)); *p = 'a'; *(p + 1) = 'b'; *(p + 2) = 0; printf("%s\n", p); return 0; }
Forums:
sizeof(int)는 2 ~ 4bytes를 가집니다.따라서 int
sizeof(int)는 2 ~ 4bytes를 가집니다.
따라서 int *는 2혹은 4씩 증가하겠죠.
거기다가 1byte의 char를 넣으면
a NULL b NULL NULL NULL 같은식으로 메모리에 들어가겠죠.
그걸 printf하니까 당연히 a만 출력되겠죠. ^^;
x86 cpu니깐 그나마 a라도 찍힌겁니다. :)
x86 cpu니깐 그나마 a라도 찍힌겁니다. :)
Re: 포인터 질문입니다.
4byte 단위로 끊어서 설명해 볼께요.
친구분이 약간의 장난( ? )을 치셨군요. :wink:
char* 을 int* 살~짝 바꿔서 헷갈리게..
[code:1]int main(void) {
a가 왜 처음에 들어가는지 몰랐는데 int는 byte단위로 끊어 거꾸로 집어 넣네요.
위에 x86이라 a만이라도 찍혔다는건 이걸두고 하신 말씀이었군요.
댓글 달기