변수공부중 이해가 안가는점!!
아잉
#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함수를 포함한 모든 함수에서 사용이 가능합니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |