버그 해결을 위한 모든 질문을 던져
0 votes
265 views

이런 글을 이 사이트에 적어도 되는지 모르겠지만 마땅히 질문할 곳을 찾지 못하여서 남깁니다.

제가 c언어를 배운지 며칠 안 되었고 책으로 독학하고 있어 약간의 무식을 겸비한 점은 양해부탁드립니다.

현재 제가 독학하고 있는 책은 '모두의 c언어'라는 책이며 변수의 선언과 초기화 과정을 배웠고, 지금은 함수의 선언과 호출 그리고 결과 값 돌려주기를 배우는 중입니다.

위 사진은 책의 예제입니다.

저는 이 예제를 다른 접근으로 한 번 만들어 보고 싶었습니다

위 두 사진은 예제를 보고 만든 것입니다.

오류가 많고 형편 없어 보이는 거 알지만 오류수정을 위한 친절한 조언을 부탁드립니다.

제가 생각했을 때 가장 큰 문제는 마지막에 변수 a와 b를 불러들이는 과정에서의 오류인 것 같습니다.

혹시 이 오류가 일어난 이유를 자세히 설명해주실 수 있을까요? 제가 지역변수라는 용어를 잘 모르는데 지역변수라는 개념과 연관이 있을 수도 있나요?

asked (2 point) , 265 views

2 answers

0 votes
2번 이미지 - 호출할 때에는 매개변수의 타입을 작성하지 않아도 됩니다.

2, 3번 이미지 - a와 b는 sum 함수에서 접근할 수 없는 상태입니다. main 함수의 지역변수입니다.

 

왜 sum 함수의 매개변수를 x, y 따로 받으려고 하시는지 잘 모르겠습니다.
이와 관련해서 어떤것을 하시려는지 적어주셔야됩니다.
answered (405 point)
0 votes

각각의 지역변수는 다른 함수에 영향을 주지 않습니다.
{
    // 이 사이가 지역
}

int sum(int x)
{
    x = a;
}

이 경우 x는 있는데 a 가 없기에 에러가 발생합니다.
그 위에 메인에 있는데 왜 모름? 하시면 
컴퓨터는 알 수 없습니다.
자기가 보는 시야에 해당 변수가 없기 떄문입니다.
컴퓨터가 알게 하기 위해선
전역변수 처리를 하던가 함수 인자값으로 처리해주셔야 합니다.


함수에 대한 변형도 의도를 알 수 없게 하신것 같습니다.
2개의 수 곱하기 위해서는 2개의 변수를 받던지, 배열 형태로 받아야 하는데 
단순히 변수 하나 없엔다고 다른 접근은 아닙니다.
차라리 샘플 코드를 가지고 곱하기 연산을 해보시는걸 추천합니다.

answered (83 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

620 질문
784 answers
748 댓글
118,442 users