유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
안녕하세요
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)에서 해설을 해주셨는데
9. C언어(포인터 매개변수) 19:29 문제에서
fn1(&i)에 대한 출력 값은 void 문을 참고하여 50이 들어가서 50 나오는 것이 이해가 되는데
fn2(i)에 대한 출력 값은 void 문을 참고하여 왜 60이 아닌 왜 50이 출력되는지 이해가 되지 않는데
해설 가능할까요?
영상만 듣기로는 이해가 되지 않습니다 ㅠㅠ
Câu trả lời 2
0
안녕하세요. 일단 주소를 넘기는 것과 값을 넘기는 것은 C언어의 문법 스펙이기 때문에 별도로 설명드릴만한 부분은 없습니다.
차이는 아시겠지만 주소는 &를 붙여서 직접 보내고, 값은 그냥 글자 그대로 변수만 보냅니다.
비유를 좀 하자면, 우리가 원하는 것은 집 안에 가구를 바꾸고 싶다는 것입니다.
집 안에 가구를 바꾸려면 집 주소를 찾아가서 거기 안에 있는 가구를 빼고, 다른 가구를 넣어야겠죠. 그게 주소를 찾아가서 값을 직접 바꾸는 것입니다.
데이터만 주는 것은 그냥 가구만 바깥으로 복사해서 전달하는 겁니다. 실제 집하고는 전혀 상관이 없이 가구만 복사해서 가지고 나갔고, 거기 안에서 사용하고 끝납니다. 실제 가구가 빠져나온 주소하고는 전혀 상관없죠.
비유를 하자면 그렇고, 실제로 값을 바꾸고 싶다면 해당 메모리 주소로 가서 값을 바꿔야 합니다.
0
안녕하세요, 인프런 AI 인턴입니다. dhkdxo12님.
C언어에서 포인터와 값을 매개변수로 넘기는 함수 동작 방식에 대한 질문을 주셨군요. fn1(&i)와 fn2(i)의 매개변수 전달 방식 차이 때문에 헷갈리실 수 있습니다. 각 함수의 동작 방식을 정리해드리겠습니다.
포인터와 값에 의한 전달 차이
fn1(&i): 이 함수는i의 주소값을 함수에 전달합니다. 포인터를 통해 직접i의 실제 메모리 위치에 접근하여 값을 변경할 수 있습니다. 이렇게 되면fn1에서i의 값이 50으로 변경됩니다.fn2(i): 이 함수는 값 자체를 복사해서 함수에 전달합니다. 즉,i의 현재 값(즉,fn1이 변경한 50)이 복사되어fn2함수 내부에서 사용됩니다. 이때fn2함수 내에서 메모리 내부의i값을 변경하는 것이 아니라, 단지 복사된 값이 함수 내에서 사용되기 때문에 외부의i값에는 아무 영향을 미치지 않습니다.
따라서, fn1에서 i가 50으로 변경된 이후에 fn2에서의 호출은 복사된 ‘현재’ 값 50을 사용하여 계속 50을 출력하게 됩니다.
관련 유사 질문 참고
이해를 돕기 위해 유사한 질문과 답변이 있는 게시물을 아래에 공유드립니다:
- 함수와 포인터 변수 관계 질문: 포인터 변수와 값에 대한 함수 호출의 차이점과 이를 이용한 출력 결과에 대한 설명이 포함되어 있습니다.
이 링크를 통해 함수 호출 시 포인터와 값에 의한 차이에 대해 더 깊이 이해하실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 26-2회. 9번 질문드립니다!
0
22
1
이론 보면서 질문이 있습니다.
0
25
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
36
2
262 정처기 실기 C언어코딩
0
24
1
정보처리기사 262 실기 Hash(해시) 질문
0
39
2
static 변수 질문입니다.
0
35
2
파이썬 4강 질문입니다.
0
42
2
모의고사 1회 3번문제
0
72
3
41강 30:10
0
48
2
이론 공부법 질문 있습니다.
0
69
2
부모의 생성자 관련 질문
0
48
2
시험지 문제에 필기해도 되나요?
0
57
3
41강 11:23
0
44
2
4강파이썬 질문입니다
0
41
2
try-catch 핸들러명
0
54
2
36강 3:48
0
56
2
35강 18:27
0
52
2
자식 코드 내 super() 생략
0
51
2
출력질문
0
66
2
31강 4:06
0
57
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
81
3
섹션 2 - 9강 강의자료 다운로드 문제
0
66
3
29강 3:09
0
51
2
28강 6:42
0
55
2

