playXP

서브 메뉴

Page. 1 / 12502 [내 메뉴에 추가]
글쓰기
작성자 아이콘 얼음덕후노메
작성일 2012-03-21 16:46:15 KST 조회 214
제목
프로그래밍 질문좀 하겠듬.

1. 함수를 만들 떄

void func(int a)

{..어쩌구 저쩌구..}

int main()

{

int a;

a = 100;

func (a);

...하략

}

이러면 main 함수에서 정의된 a = 100이란 값이 func함수의 a에도 그대로 적용되는 거 맞죠?

 

2. func함수의 a를 다시 main으로 가져오려면 어케 해야하나요?

 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
포더윈터 (2012-03-21 16:49:52 KST)
0↑ ↓0
센스 이미지
네 그렇습니다
func함수의 a를 다시 가져오려면

int func(int a){
...
return a;
}

가져올 a의 형태를 함수의 타입으로 정의해줍니다. 이떄는 int형으로 설정했습니다
마지막에 return a;라고 씁니다. 그러면 함수 자체가 값을 리턴하므로
int a = 100;
int k;
k = func(a);
이렇게 쓰시면 a의 값이 func에서 계산되고, 계산된 a가 k로 돌아오게 됩니다
포더윈터 (2012-03-21 16:51:02 KST)
0↑ ↓0
센스 이미지
return을 받지 않고 void형으로 처리하는 방법도 있습니다
call by reference라고 알려진 방법인데요

void func(int *a){
...
}

int a = 100;
func(&a);
printf("%d",a);

즉 함수에서 값을 받을때 포인터로 받아 연산하고... 근데 이 부분은 저도 가물가물해서 패스
아이콘 얼음덕후노메 (2012-03-21 16:54:08 KST)
0↑ ↓0
센스 이미지
값을 두개 이상 가져와야 하면요?
포더윈터 (2012-03-21 16:56:14 KST)
0↑ ↓0
센스 이미지
return a, b;였나 함수선언이 int func(int a, int b);이면
A, B = func(a, b); 이렇게 하면 되는걸로
아이콘 얼음덕후노메 (2012-03-21 16:57:00 KST)
0↑ ↓0
센스 이미지
포더윈터 // 넵 감사합니다.
포더윈터 (2012-03-21 17:01:16 KST)
0↑ ↓0
센스 이미지
두 개 이상 return은 안되네요 파이썬하고 헷갈린건지 뭐랑 헷갈린건진 모르겠는데
그럴땐 그냥 call-by-reference로 하거나 구조체로 옮겨야 할 것 같습니다
포더윈터 (2012-03-21 17:04:05 KST)
0↑ ↓0
센스 이미지
call by reference 예제 하나 첨부합니다

#include <stdio.h>
void func(int *a, int *b){
*a=*a+1;
*b=*b+1;
}

int main(){
int a, b;
a=3;
b=4;
func(&a,&b);
printf("%d %d",a,b);
return 0;
}
실행결과: 4 5
아이콘 얼음덕후노메 (2012-03-21 17:56:47 KST)
0↑ ↓0
센스 이미지
ㄴ리턴 되는데요? 심지어 array도 싹다 리턴 되던데
포더윈터 (2012-03-21 18:20:09 KST)
0↑ ↓0
센스 이미지
엥 왜 나만 안되지
데브C 개새끼 진짜 마소가 짱이라니까
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.