변수공부중 이해가 안가는점!!
아잉
#includestdio.h
int val;
voidadd(int);
int main(void)
{
printf(val : %d\n, val);
add(3);
printf(val : %d\n, val);
val++;
printf(val : %d\n, val);
return 0;
}
void add(int n)
{
val+=n;
}
질문. 여기서 void add(int) 요거는 입력은 받을수 있지만 반환은 하지 못하는 함수 잖아요
그런데 보면 void add(int n)이 3을 입력 받았자나요 그럼 거기서 끝내야하는데 return도 없는데 다시 val값을 메인함수로
반환 해주고 있네요 원래 전달값은 있고 출력값이 없는 함수는 메인함수에서 값을 전달받고 그 전달받은 값을 프린트에프등으로
출력해주는 기능으로 쓰이는거 아닌가요?
전달받은값을 다시 반환 할려면 int add(int n) 으로 쓰고 return val+=n; 이렇게 사용해야 하는거 아닌가요?
뭔가 해깔리네요
-
돌심보
int val 을 전역 선언이 아니라 main 함수 안에 넣고 해보세요 결과가 어떻게 되는지..^^;
-
꽃봄
return형이 없는 함수는 함수의 내용을 모두 실행 후 종료됩니다.
add() 함수는 val 이란 전역변수에 3을 더해주네요..
함수 호출시 val+N(3)을 실행 후 함수가 끝났다고 보시면 됩니다. void형 함수이기 때문에...
위 코드는 아래와 같은 의미입니다.
printf(\val : %d\\n\ -
올리브
반환은 하지 않고 있죠 return 이 없으니.. 그런데 전역변수를 사용해서 add함수에서 val값을 main함수로 반환해서 3이라는 출력값을 나타내고 있는거 아닌가요? 원래 반환을 하지 않으면 출력값은 0이 나와야 하자나요..
-
돋되다
add함수는 값을 반환하고 있지 않습니다.
단지 val의 값을 바꾸고 있는거죠. -
소윤
전달할 필요도, 반환도 필요없죠. 어떤 값이 저장된 메모리의 값을 직접 바꾸는 것인데...
-
맑은누리
그렇다면 전역변수를 사용하면 void add(void) 이럴때도 값을 전달받을수 있고 반환할수도 있나요?
void add(int n)처럼요 -
Schokolade
2번째 줄에 있는 val 은 함수 외부에서 정의되었죠?
이러한 변수를 외부변수라고 하는데,
프로그램 전역에서 선언만 하면 사용(접근)할 수 있습니다.
add 함수 내부에서 사용되고 있는 val 이 바로 외부변수입니다.
프로그램에서 사용되는 val 변수가 모두 동일한 변수입니다. -
월식
val은 전역변수이기 때문에, main함수를 포함한 모든 함수에서 사용이 가능합니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |