Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- /
- 도커 #Docker #배포 #Spring #MySQL #백엔드배포
- 도커 #docker #docker-compose.yml #도커컴포즈 #배포 #spring #mysql #docker-compose
Archives
- Today
- Total
개발자 데뷔!
[C/C++ 7.4] 함수에서 값 2개이상 return 하기 본문
원칙적으로 c/c++ 에선,
* 절대 return 함수값이 항상 1 개 뿐이다!!
2개 이상의 값을 return 하는 것은 원칙적으로 불가능 하지만,
다음의 방법을 통해 우회적으로 여러개의 값을 이동시킬 수 있다.
1. 함수에 배열을 직접 전달
- 사실은, 배열을 전달하는 것 자체가,
=> 배열의 시작점(첫 index)의 주소값을 전달하는것임
- 즉, return을 따로 안해도, 주소값에 접근해 값 자체를 바꿈
- 배열 함수전달은 포인터없이도 주소값을 넘기는 것이기 때문에
값을 따로 다른변수에 입력받아 쓰지 않아도 됨 !!
void PrintAll(int array[6]) { // 함수에 배열 전달
for (int i = 0; i < 6; i++)
cout << array[i]<<endl;
}
int main() {
int arr[6] = {1,2,3,4,5,6};
PrintAll(arr); // 함수 안에 배열 전달
return 0;
}
2. 포인터로 배열 전달 (return 대신)
- 주로 사용하기만 하는 변수는 그냥 받고,
- 값 저장해야 하는 변수는 포인터로 선언해 주소값을 넘긴다!!! ******
int ABC(int a, int b, int *SUM, int *GOP) { //int *SUM; SUM = &A; //1.포인터변수 선언 & 2.주소값 할당
*SUM = a + b; //*SUM = a+b; //3. 할당된 주소의 '값(*)'에 값 입력
*GOP = a * b;
return 0;
}
int main() {
int a, b;
int SUM, GOP;
cin >> a >> b;
ABC(a, b, &SUM, &GOP); // SUM, GOP값이 안 정해져 있어도 됨! (초기화만 해놓는다면)
cout << SUM <<" "<< GOP;
return 0;
}
//6번
int arr[2][6] = { {4,5,6,1,3,1},{2,1,3,6,3,6} }; //함수에서 포인터 사용 총정리 !!!!! *****
int input(int* a,int* b,int* c) {
// 주소값을 받아와 포인터변수로 가리킴
cin >> *a >> *b >> *c;
return 0;
}
int process(int a,int b,int c,int* ac,int* bc,int* cc) {
// 함수 내에서 사용하는 일반 변수 3개,
// 값을 저장해야 하는 포인터 변수 3개
*ac=0, *bc=0, *cc=0;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 6; j++) {
if (arr[i][j] == a)
*ac = *ac+1; // 값 사용할 때는 항상 역참조 해서 사용!!!
else if (arr[i][j] == b)
*bc = *bc+1;
else if (arr[i][j] == c)
*cc = *cc+1;
}
}
return 0;
}
int output(int a,int b,int c,int ac,int bc,int cc) {
// 어쨋든 위 6개 변수 전부 출력할 때 필요하니까 전부 변수로 받음
cout << a << "=" << ac << "개" << endl;
cout << b << "=" << bc << "개" << endl;
cout << c << "=" << cc << "개" << endl;
return 0;
}
int main() {
int a, b, c;
int ac, bc, cc;
//포인터 함수 argument 로 사용하는 법 !!
input(&a,&b,&c); //argument
process(a,b,c,&ac,&bc,&cc);
output(a,b,c,ac,bc,cc);
return 0;
}
3. 전역 변수로 선언해 사용 (return 대신)
'프로그래밍 언어 > C' 카테고리의 다른 글
[C/C++ 7.1] 함수 (0) | 2022.03.16 |
---|---|
[C/C++ 2.10] ASCII(아스키 코드) 와 형변환(casting) (0) | 2022.03.15 |
[C/C++ 8.0] 매크로(Macro) 함수 (0) | 2022.03.11 |
[C/C++ 3.4] 2중 for문 마스터 (2차원 배열 접근하기) (0) | 2022.03.11 |
[C/C++ 3.3] 2차원 배열 초기화 (0) | 2022.03.11 |