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