C언어 - 구조체를 함수로 전달하는 방법
2020. 11. 15. 11:17ㆍ개인공부/C언어
struct fortune{
char bank_name[FUNDLEN];
double bank_saving;
char fund_name[FUNDLEN];
double fund_invest;
};
//double sum(double, double);
double sum(struct fortune my_fortune);
int main(){
struct fortune my_fortune = {
"Welles-Fargo",
4032.27,
"JPMorgan Chase",
8543.94
};
printf("Total : $%.2f.\n",
//sum(&my_fortune.bank_saving, &my_fortune.fund_invest));
sum(my_fortune); // 위를 이렇게 쓸수있으면 얼마나 편할까?
return 0;
}
//double sum(const double* x, const double* y)
double sum(struct fortune my_fortune)
{
//*x = 0.0f;
//*y = 0.0f;
//return *x+ *y;
retrun my_fortune.bank_saving + my_fortune.fund_invest;
}
// 구조체도 대입을하면 복사가 된다.
위의 방법은 my_fortune이라는 같은 이름으로 복사해서 연산에 쓰인다. 고로 메모리 낭비.
struct fortune{
char bank_name[FUNDLEN];
double bank_saving;
char fund_name[FUNDLEN];
double fund_invest;
};
//double sum(double, double);
double sum(struct fortune *my_fortune); //my_fortune 포인터
int main(){
struct fortune my_fortune = {
"Welles-Fargo",
4032.27,
"JPMorgan Chase",
8543.94
};
printf("Total : $%.2f.\n",
sum(&my_fortune); // my_fortune의 주소를 가르킨다.
);
return 0;
}
double sum(const struct fortune *mf)
{
retrun mf->bank_saving + mf->fund_invest;
}
// my_fortune 값을 복사해서 연산에 쓰는것이 아니라 포인터로 가르켜 연산하는 방법
// 메모리 낭비를 막을수 있지만 my_fortune 자체의 값을 건드려 바꿀수 있으므로 const를 붙여준다.
출처 : 홍정모의 따라배우는 C언어
'개인공부 > C언어' 카테고리의 다른 글
C언어 - 열거형 (0) | 2020.11.15 |
---|---|
C언어 - 공용체의 원리 (0) | 2020.11.15 |
C언어 - 구조체를 다른 구조체의 멤버로 사용하기 (0) | 2020.11.15 |
C언어 - 구조체의 기본적인 사용법 (0) | 2020.11.14 |
C언어 - 파일 입출력 (0) | 2020.11.13 |