From b70f02722e9a78a07ff178dc9831a4614a83bff1 Mon Sep 17 00:00:00 2001
From: Sohyun Lee <sh119@ajou.ac.kr>
Date: Thu, 13 Jan 2022 16:26:41 +0900
Subject: [PATCH] lec07

---
 lec07/fnpointer.c |  57 ++++++++++++++++++++++++++++++++++++++++++++++
 lec07/func.c      |  10 ++++++++
 lec07/func.h      |  11 +++++++++
 lec07/func.o      | Bin 0 -> 1360 bytes
 lec07/main.c      |   9 ++++++++
 lec07/main.o      | Bin 0 -> 1768 bytes
 6 files changed, 87 insertions(+)
 create mode 100644 lec07/fnpointer.c
 create mode 100644 lec07/func.c
 create mode 100644 lec07/func.h
 create mode 100644 lec07/func.o
 create mode 100644 lec07/main.c
 create mode 100644 lec07/main.o

diff --git a/lec07/fnpointer.c b/lec07/fnpointer.c
new file mode 100644
index 0000000..0bfb182
--- /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 0000000..4ca0d61
--- /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 0000000..04ac8f7
--- /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
GIT binary patch
literal 1360
zcmb<-^>JfjWMqH=Mg}_u1P><4z%YRc!FB*M9T>P7xEMk`I-hpd{^<_=(|O_G1181`
zj0a*5!vtOb^ae0?yZ&iDz{tP;0#w1l2TZYt8Qh(ntrRpulS=bSN)^oYO!W+OjZ48i
z!#YC?Jp&U>h$z@91_lNZD1)&oh=H*}fKi%<onrzc1A`0$1cRhSL4+fpKpT@YFIxZ)
zI|o$G1|-hFz@P-8Ve+vMd5{n`3<?7lhL8WT$uVOMAqEC!2Bbhj(#XufjKo7QnHg9S
z93&Pq0~-<#!DMD&L2#ffkROGR+yf2+1_lN`1_lO@IE)YWJ4jDjX<o8kG6RS*1d~P}
zQ3eGt$pH2NvM(TUjSz>K$DmhSnOl;W#GqGPQUswhV62kViV_CBl*E!m2EC->Vg|kB
z{M_8syb=bzy!?_>J$JuQ-QtqO<ZK4LqSTy3z0{2Ow4%h^RHzFmqof%az@dR2f-rxW
zqZtp1XJjEosDAVqD@Rs@#75Vz&cMI`iW746>p<-{K(YhGgxRkJ;viv|{V>`Tsvk)S
zn7I&4ViGWYFc~kXe&jR&l3M{H7#J8LpfrpE`4z?n(XI>(;8Y3=Z;%)Wb3hG*`3s~E
z6h|N$BrgFXaM%r&f;#jAn8U!p2@Pj-{UCAlum@@R0M!pGM?hjA3>5}3!B~(1l#jto
R6v6`P{ty&VNLoV{0suwpUpoK*

literal 0
HcmV?d00001

diff --git a/lec07/main.c b/lec07/main.c
new file mode 100644
index 0000000..d9dbaa2
--- /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
GIT binary patch
literal 1768
zcmb<-^>JfjWMqH=Mg}_u1P><4z_5ZD!FB*M9T<2Sco;%GI-l-OVPIf*0TSFb=l}oz
zoyR<SZ9%*pAOb8-SOr*Z>|wXkyktWK)f5HQ6fOo3#|Xw@aCdgLQqTxZD$Oe?RWR2x
z)icmFE(P-p>kKXQ3`{g3q998d7(^fx17lSX17n2%qcjgY#{@<O1{nqj21)ya2uD7F
zHYR6YHYP6~b`FpLb_@y=7KV@ivB@%H4KW4=W(K4{L(<61z=Fg>Fqs)x5ga5IGXpyk
z55Z(+!0upX1~!BuC<~-g2+5sbzcVl}@G>wk2td^!Q_48RHF1a=;1FlXP0Y;GO9oR6
z@$NqUPL4kD{%&r;t|9Ruj!r(V@eFC8IA<s*%FHWC19OZR7#O&qjsb-fHv<F1pZ^db
z0TpLrU;u{}Ok4>n4pPs9q+SO}9OPG+dMl_n%p6WA-vvseo1*{~2dM{PD3^gjuedU|
zBr%CWuehWLLTA8OMX5Q7dL^k9B@B8gi6w~)dP&8_40=WR5KeM_Zf<H`34>l<eo3mH
zyI-hoaY<rwHiI5mTWUspT2W$dD%>6l86fwA(lC0;faGNc23UH4Sp!lFV}odE1_p4d
zg{cRLf$$7yU`zmUpz#LM3rcSwAy|B=F))BrA9{}H2PwjWL1rKegW?fnCb{|zq4q<a
z3pW~OzZ6^q!a%p*5~?4R&LJuw<Vpy|parF26ih#ic7p1M$;0T&Fa{b8(+3j{hw4Xn
z{|%@D3n&evKw$-AgXka}@uvX|P*^;H@*PMo2!r&&#6j*sw;Loc0Fq!}U<iQHpu7so
wOX&JRVo<9<+Tb_=YN#1p1j2wC2jMU<FbFb$%2PNO&TxPlng|zxFwpe_0A=Et>Hq)$

literal 0
HcmV?d00001

-- 
GitLab