diff --git a/lec07/fnpointer.c b/lec07/fnpointer.c new file mode 100644 index 0000000000000000000000000000000000000000..0bfb182c4ac01dfc2476609e711c3db52f2a2f2c --- /dev/null +++ b/lec07/fnpointer.c @@ -0,0 +1,57 @@ +#include<stdio.h> + +void add(int *a, int *b, int *c) +{ *c = *a + *b;} + +void sub(int *a, int *b, int *c) +{ *c = *a - *b;} + +void div(int *a, int *b, int *c) +{ *c = (*a) / (*b); } + +void mul(int *a, int *b, int *c) +{ *c = (*a) * (*b); } + +int main() +{ + int a = 100; + int b = 200; + int c = 9999; + char ch; + int op = 0; + + scanf("%d %c %d", &a, &ch, &b); + // ch = + :add, -:sub, *:mul, /:div + switch(ch) + { + case '+': + op = 0; + break; + case '-': + op = 1; + break; + case '*': + op = 2; + break; + case '/': + op = 3; + break; + } + + + + void (*fp[4])(int *, int *, int *) = {add, sub, mul, div}; // 함수의 포인터 + //int const *p = &a; + //int * const q = &a; + fp[op](&a, &b, &c); + fprintf(stdout, "%d %c %d = %d\n",a, ch, b, c); + + fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c); + fp[1](&a,&b,&c); + fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c); + fp[2](&a,&b,&c); + fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c); + fp[3](&a,&b,&c); + fprintf(stdout, "a,b,c:%d %d %d\n", a, b, c); + +} diff --git a/lec07/func.c b/lec07/func.c new file mode 100644 index 0000000000000000000000000000000000000000..4ca0d617e013203f9990db8cf8141114c183c883 --- /dev/null +++ b/lec07/func.c @@ -0,0 +1,10 @@ +#include "func.h" + +int func1(int a) +{ + return (a*10); +} +int func2(int a) +{ + return DF(a+1) *20; +} diff --git a/lec07/func.h b/lec07/func.h new file mode 100644 index 0000000000000000000000000000000000000000..04ac8f7042cb2aa3c45496d72eedd14cf95c7c85 --- /dev/null +++ b/lec07/func.h @@ -0,0 +1,11 @@ + + +#if FUNCTION_NEGATIVE == 1 +#define DF(a) (-(a)*(a)) +#else +#define DF(a) ((a)*(a)) +#endif + +extern int func1(int x); +extern int func2(int x); + diff --git a/lec07/func.o b/lec07/func.o new file mode 100644 index 0000000000000000000000000000000000000000..904028507d9d5c752f1f3f2d4eb7dae21721accf Binary files /dev/null and b/lec07/func.o differ diff --git a/lec07/main.c b/lec07/main.c new file mode 100644 index 0000000000000000000000000000000000000000..d9dbaa21d56a1366221bff5154a288643ab871b2 --- /dev/null +++ b/lec07/main.c @@ -0,0 +1,9 @@ +#include <stdio.h> +#define FUNCTION_NEGATIVE 1 +#include "func.h" + +int main() +{ + printf("Func1 %d %d\n", func1(100), DF(10)); + printf("Func2 %d %d\n", func2(100), DF(10)); +} diff --git a/lec07/main.o b/lec07/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3fbad033db377c115f11b357b216583c9924ece3 Binary files /dev/null and b/lec07/main.o differ