연습문제 1)
// 연습문제)
// 값 교체 함수 만들기 (포인터)
// 함수명 : swap()
int a = 10;
int b = 20;
swap(&a, &b);
더보기
// 연습문제 : 함수
// -> 갑 교체 함수 만들기 (포인터)
void swap(int *num1, int *num2){
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int main(){
int a = 10;
int b = 20;
swap(&a, &b);
printf("a: %d, b: %d\n", a, b);
return 0;
}
연습문제 2)
// 실습예제 : 함수 & 포인터
// -> 나만의 계산기 만들기
// 각 함수 실행 후,결과 출력
// printf("times:\t %.1f\n", answer);
// 더하기, 빼기, 곱하기, 나누기, 나누기(몫만), 나누기, 나머지
vdoi main(){
int a = 5;
int b = 3;
int answer;
printf("times:\t %.1f\n", answer);
}
더보기
// 방법 1) 포인터 사용X -> return 변수 필요 (함수의 한계)
float plus(int a, int b){
float c = a + b;
return c;
}
// 방법 2) 포인터 사용O -> return 변수 없이 처리완료
void add(int *a, int *b, float *p){ // 결과를 대입할 대상(변수)이 함수지역 안에 존재하지 않기 때문에,
*p = *a + *b; // 포인터 값(주소)을 매개변수로 받아 처리한다.
}
// ...
void minus(int a, int b, float *p){
*p = a - b;
}
void times(int a, int b, float *p){
p[0] = a * (float)b;
}
void div_f(int a, int b, float *p){
*p = a / (float)b; // typecasting : integer -> float
}
void div_i(int a, int b, float *p){
*p = a / b;
}
void modulo(int a, int b, float *p){
p[0] = a % b;
}
main main(){
printf("\nRUN>>>\n\n");
//
int num1 = 5;
int num2 = 3;
float answer;
float *p = &answer;
answer = plus(num1, num2); // 연산할 전달인자를 넣어 함수실행 후 -> 리턴값을 변수에 대입
printf("puls:\t %.1f\n", answer);
add(&num1, &num2, p); // 연산할 전달인자 + 값을 저장할 변수의 주소까지 넣어 한번에 실행 및 대입
printf("add:\t %.1f\n", answer);
minus(num1, num2, &answer);
printf("minus:\t %.1f\n", answer);
times(num1, num2, p);
printf("times:\t %.1f\n", answer);
div_f(num1, num2, &answer);
printf("div_f:\t %.1f\n", answer);
div_i(num1, num2, &answer);
printf("div_i:\t %.1f\n", answer);
modulo(num1, num2, p);
printf("modulo:\t %.1f\n", answer);
}
'C > ☞' 카테고리의 다른 글
[49] 마리오 무브 (0) | 2020.07.23 |
---|---|
[48] 배열과 함수 (0) | 2020.07.23 |
[46] 함수의 종류 (0) | 2020.07.23 |
[45] 함수 기본 (0) | 2020.07.23 |
[44] 연습문제 : 포인터 (0) | 2020.07.23 |
댓글