일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Solution
- leetcode
- Circuit
- cs231n
- palindrome
- Big size image
- #9
- Features
- atmega128
- softmax backpropagation
- autoencoder
- Softmax
- pulldown
- Backpropagation
- 풀다운저항
- backward pass
- TensorFlow
- impl
- NotFoundError
- neural net
- KNN
- pyTorch
- error
- Floating
- 회로
- assignment1
- pullup
- assignment
- 풀업저항
- two-layer neural net
- Today
- Total
코딩공부
Scanf와 & 본문
오늘은 아직도 잘 모르겠는 개념에 대해 정리해보겠다! 많은 지적 부탁드립니다ㅠㅠ
그건 바로 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 |