코딩공부

Scanf와 & 본문

Language/C언어

Scanf와 &

초보코더 2017. 9. 7. 14:49
반응형

오늘은 아직도 잘 모르겠는 개념에 대해 정리해보겠다! 많은 지적 부탁드립니다ㅠㅠ


그건 바로 Scanf에는 &가 왜들어가는가!!! 주소값 찾아서 일하는게 그렇게 좋으면 왜 printf는 pointer써서 뽑아내질 않냐!!! 라는 것이다. 


굉장히 어이없고 황당한 생각일 수 있겠지만 내입장에선 받아들이기 너무 힘든 개념이였다..


printf에 관해서 먼저 생각해보자!

다들 잘 알다시피(잘 알거라고 생각한다.) printf에서 변수값을 출력할때 사용하는 방법은 다음과 같다.

이렇게 해주면 출력이 아주 크-린하게 잘된다. 심지어 이론도 쉽게 설명해준다! %d가 num에 있는 값을 받아서 printf라는 함수가 출력을 해주는 겁니다~~.

아! 좋아! 쉬워! 새로워 늘짜릿해 쉬운게최고야.


그런데 scanf로 넘어가면 갑자기 이상한게 붙어야 한다고 한다. 다음사진을 보자.

이런식으로 코드를 작성하곤 설명은 보통 이런식이다.

'scanf함수가 값을 받아서 변수를 저장하려면 메모리 주소가필요한데~ &변수 의 형식은 그 변수의 주소를 의미하는거야~ 이걸 쉽게 설명하면 택배기사가 너의 주소를 알아야 거기에 짐을 배달해주잖아? 그래서 그런거야!'


아 물론 좋다... 알겠다! 주소를 알아야 가져다 주겠지 당연히. 그런데 왜? printf에서는 변수 이름만 알아도 잘 가져가던데?! 왜 scanf놈은 변수이름만 알려주면 찾아가질 못하고 꼭 주소를 알려줘야 찾아가냐?? 라는 질문이 생겼던 거시다.


내가내린 결론은 단순하다. 프로그램이 그렇게 짜졌다... scanf에서는 주소값을 받아서 그 위치에 값을 넣어주게 되어있고 printf는 변수의 이름을 받아 내부 값을 가져가는 것이다. 사실 여전히 속 시원히 풀린 문제는 아니다. 아직도 잘 이해가 안되지만 일단은 이렇게 이해하고 주변에 물어볼 곳이 생길때마다 물어보는 중이긴하다 다음번에는 더 나은 답을 가지고 와서 글을 쓸 수 있었으면 좋겠다ㅠㅠ


혹시 나와같은 생각을 하고 이 글에 들어온 사람이라면 더 나은 대답을 못해줘서 정말 미안하다...ㅠㅠ...

반응형

'Language > C언어' 카테고리의 다른 글

문자열에 관한 고찰(1)  (0) 2017.10.08
Palindromic 수 찾기  (0) 2017.10.01
2차원 배열과 포인터에 대해 Araboza  (0) 2017.09.26
Visual Studio의 scanf와 scanf_s  (0) 2017.09.05