선우의 코딩일지

C언어로 클래스 구현해보기 본문

C

C언어로 클래스 구현해보기

sunwookim05 2022. 6. 23. 02:45

오늘 문득 C로 자바의 클래스를 구현해보고 싶어졌다.

#include <stdio.h>
#include <stdlib.h>

void setUp();
void ca(double *result, double a, double b, char c);

struct _Calculator{
    void (*Calculate)(double*, double, double, char);
}Calculator;

int main(void){
    double result, a, b;
    char c;

    setUp();

    scanf("%lf %c %lf", &a, &c ,&b);
    Calculator.Calculate(&result, a, b, c);
    printf("%g %c %g = %g", a, c, b, result);

    return 0;
}

void setUp(){
    Calculator.Calculate = ca;
}

void ca(double *result, double a, double b, char c){
    *result = (c == '+' ? a + b : c == '-' ? a - b : c == '*' ? a * b : c == '/' ? a / b : 0);
}

구조체와 함수 포인터를 활용해 ca 함수의 메모리 값을 Calculator.Calculate 에 저장한다.

그러면  Calculator.Calculate(&result, a, b, c); 이런식으로 호출을 할 수있는데 &result 는 메인함수에서  대입연산 없이 함수안에서 바로 대입 될수있도록 포인터를 활용했다. 

 

Comments