프로그래밍

 3198, 1/160 회원가입  로그인  
   qkreoduf1654
   [C언어]scanf에 쓰이는거 질문!!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3085 [복사]


제가 c언어 계속 하다하다 도저히 의미를 모르겠는게 있는데
그게 &거든요? scanf("%d", &변수); 라고 써있는데 &가 무슨 역할인지 모르겠어요 대답좀!!

  Hit : 4132     Date : 2011/07/07 06:12



    
letmein 엠퍼샌드라고 읽고요.
해당 변수의 주소를 가리킵니다.
%d 정수의 서식문자이죠?
정수를 하나 받아서 변수에 가따 넣자는 의미입니다.
2011/07/07  
U_SoRang 10진수형 변수 입력해서, 그 변수의 주소에 저장하라. 2011/07/07  
reality &'변수' 의 형식 중 & 요건 변수의 시작점, 주소이라고 생각 하면 되요. 2011/07/07  
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