| endosymbiosis |
C언어에서 printf와 scanf를 사용할 때 강력한 출력 기능을 지원합니다. 예를 들면,
printf("%d", 65");
printf("%c', 65");
라고 쓰면 출력 형태에 따라 각각 숫자와 알파벳이 나오게 되죠.
마찬가지로 scanf를 사용할 때 내부적으로 구동되는 방식은
1. 값을 입력받고
2. 그 값을 레지스터에 임시로 저장하고
3. 해당 변수의 주소를 찾아가 그 주소가 가리키는(여기서 포인터의 개념이 살짝) 메모리에
4. 임시로 저장했던 값을 넣는다.
5. 레지스터에 임시로 저장된 값은 지워짐
이게 실질적으로 구현되는 scanf의 방식입니다.
따라서 &a 라고 하는 것은 a의 주소를 의미하죠.
우리가 친구의 집을 찾아갈 때 주소를 알아야하잖아요. 친구가 우리집에 놀러와~ 라고 말했는데,
수많은 주소 중에서 친구의 집이 어디있는지 어떻게 아나요? 주소를 알아야 찾아갈 수 있겠죠?
컴퓨터도 마찬가지입니다.
내용이 어려우시다면 일단 & 기호를 사용한다는 것이라고 알고 계시고, 나중에 포인터와 문자열을 사용하기 시작하면 이해하기 쉬울 것입니다. 파이팅!!!
(참고) 컴퓨터의 마인드로 접근하라.
1+2+3+4+5 라는 것을 계산할 때 우리는 무의식적으로
임시로 저장된 공간을 사용해서 계속 누적하는 것이랍니다.
1 + 2 = 3 을 하고나서 3을 머릿속에 기억해뒀다가 3 + 3을 하는 것이겠죠?
이게 이해가 안된다면 이것을 계산해보세요. 세로로 한꺼번에 말고, 앞에서부터 2개씩~
17 + 54 + 20 + 27 + 36 + 13 |
2011/07/12 |
|