diff --git a/Project6 - pointer/pointer_practice/1.ptr_var.c b/Project6 - pointer/pointer_practice/1.ptr_var.c index 52d45e10c4879e50466ecabdfaba2288a52f7590..c8a62ba381bfbcb4b3ae456010b61dac40d42f95 100644 --- a/Project6 - pointer/pointer_practice/1.ptr_var.c +++ b/Project6 - pointer/pointer_practice/1.ptr_var.c @@ -1,20 +1,20 @@ -#include <stdio.h> - -int main(void) -{ - short n1=10, n2=20; - int n3=0x10203040; - short *p; //n1의 타입을 적는다. - p = &n1; - printf("n1:%d, *p:%d\n", n1, *p); - *p = 100; - printf("n1:%d, *p:%d\n", n1, *p); - (*p)++; - printf("n1:%d, *p:%d\n", n1, *p); - p = &n2; - printf("n2:%d, *p:%d\n", n2, *p); - p = &n3; - printf("n3:%x, *p:%x\n", n3, *p); - printf("n3:%x, *p:%x\n", n3, *(p+1)); - return 0; -} +#include <stdio.h> + +int main(void) +{ + short n1=10, n2=20; + int n3=0x10203040; + short *p; //n1의 타입을 적는다. + p = &n1; + printf("n1:%d, *p:%d\n", n1, *p); + *p = 100; + printf("n1:%d, *p:%d\n", n1, *p); + (*p)++; + printf("n1:%d, *p:%d\n", n1, *p); + p = &n2; + printf("n2:%d, *p:%d\n", n2, *p); + p = &n3; + printf("n3:%x, *p:%x\n", n3, *p); + printf("n3:%x, *p:%x\n", n3, *(p+1)); + return 0; +} diff --git a/Project6 - pointer/pointer_practice/2.constPtrVar.c b/Project6 - pointer/pointer_practice/2.constPtrVar.c index ba41d10083fffebd201cc3b44b25e984f1f632c3..8db068064bfc8c7319b9e0e44ceb41d0401203a9 100644 --- a/Project6 - pointer/pointer_practice/2.constPtrVar.c +++ b/Project6 - pointer/pointer_practice/2.constPtrVar.c @@ -1,21 +1,21 @@ -#include <stdio.h> - -int main(void) { - int n1=10, n2=20, n3=30; - int * p1=&n1; - const int * p2=&n1; //int를 상수화하겠다. - int * const p3=&n1; //p3를 상수화하겠다. p3의 주소값을 못바꾸게 하겠다. - const int * const p3=&n1; - - (*p1)++; - (*p2)++; //p2의 내용물을 변경할 수 없다. - (*p3)++; - (*p4)++; //p4 변경 x - - p1 = &n2; - p2 = &n2; - p3 = &n2; //p3를 변경할 수 없다. - p4 = &n2; //p4 변경 x - - return 0; -} +#include <stdio.h> + +int main(void) { + int n1=10, n2=20, n3=30; + int * p1=&n1; + const int * p2=&n1; //int를 상수화하겠다. + int * const p3=&n1; //p3를 상수화하겠다. p3의 주소값을 못바꾸게 하겠다. + const int * const p3=&n1; + + (*p1)++; + (*p2)++; //p2의 내용물을 변경할 수 없다. + (*p3)++; + (*p4)++; //p4 변경 x + + p1 = &n2; + p2 = &n2; + p3 = &n2; //p3를 변경할 수 없다. + p4 = &n2; //p4 변경 x + + return 0; +} diff --git a/Project6 - pointer/pointer_practice/4.ptr_op1.c b/Project6 - pointer/pointer_practice/4.ptr_op1.c index 9f9f8ea0113558372e16ac72e61930818cec03ea..ab96b558eb40c80a50ddb7e27ac3f68cfaf7c039 100644 --- a/Project6 - pointer/pointer_practice/4.ptr_op1.c +++ b/Project6 - pointer/pointer_practice/4.ptr_op1.c @@ -1,19 +1,19 @@ -#include <stdio.h> - -int main(void) -{ - short data[] = {1, 2, 3, 4, 5}; - short *p; - p = &data[0]; //p = data; - printf("data[0]:%d, *p:%d\n", data[0], *p); - p++; - printf("data[1]:%d, *p:%d\n", data[1], *p); - p += 2; - printf("data[3]:%d, *p:%d\n", data[3], *p); - p += -2; - printf("data[1]:%d, *p:%d\n", data[1], *p); - - //p *= 2; - //p /= 2; - return 0; -} +#include <stdio.h> + +int main(void) +{ + short data[] = {1, 2, 3, 4, 5}; + short *p; + p = &data[0]; //p = data; + printf("data[0]:%d, *p:%d\n", data[0], *p); + p++; + printf("data[1]:%d, *p:%d\n", data[1], *p); + p += 2; + printf("data[3]:%d, *p:%d\n", data[3], *p); + p += -2; + printf("data[1]:%d, *p:%d\n", data[1], *p); + + //p *= 2; + //p /= 2; + return 0; +} diff --git a/Project6 - pointer/pointer_practice/5.ptr_op2.c b/Project6 - pointer/pointer_practice/5.ptr_op2.c index e5b875734c45c17fa1044ec137982b2a9bcc3489..e89d826f360c8fb974a6f9b6cadf51df514300e2 100644 --- a/Project6 - pointer/pointer_practice/5.ptr_op2.c +++ b/Project6 - pointer/pointer_practice/5.ptr_op2.c @@ -1,16 +1,16 @@ -#include <stdio.h> - -int main(void) -{ - short data[] = {1, 2, 3, 4, 5}; - short *p1=&data[0], *p2=&data[4]; - - printf("p1:%p, p2:%p\n", p1, p2); - printf("p1+4:%p\n", p1 + 4); - printf("p2-4:%p\n", p2 - 4); - printf("p2-p1:%d\n", p2 - p1); //주소 offset - //printf("p1+p2:%p\n", p1 + p2); - //printf("p1*p2:%p\n", p1 * p2); - //printf("p1/p2:%p\n", p1 / p2); - return 0; -} +#include <stdio.h> + +int main(void) +{ + short data[] = {1, 2, 3, 4, 5}; + short *p1=&data[0], *p2=&data[4]; + + printf("p1:%p, p2:%p\n", p1, p2); + printf("p1+4:%p\n", p1 + 4); + printf("p2-4:%p\n", p2 - 4); + printf("p2-p1:%d\n", p2 - p1); //주소 offset + //printf("p1+p2:%p\n", p1 + p2); + //printf("p1*p2:%p\n", p1 * p2); + //printf("p1/p2:%p\n", p1 / p2); + return 0; +} diff --git a/Project6 - pointer/pointer_practice/6.ptrNarray1.c b/Project6 - pointer/pointer_practice/6.ptrNarray1.c index 4482e54dbdf12cceaf073425184d94256d7949bb..740e42337d35caf1c569b530eb4d751d396dbc2a 100644 --- a/Project6 - pointer/pointer_practice/6.ptrNarray1.c +++ b/Project6 - pointer/pointer_practice/6.ptrNarray1.c @@ -1,29 +1,29 @@ -#include <stdio.h> - -int main(void) -{ - short arr[5] = {1, 2, 3, 4, 5}; - short *p; //p=arr; p=&arr[0]; short * const arr; - int i; - - p = &arr[0]; - printf("%d,%d\n", p[1], p[3]); - - p = &arr[1]; - printf("%d,%d\n", p[1], p[3]); - -#if 0 - for(i=0, p=arr; i<5; i++) { - printf("%d,%d\n", arr[i], p[i]); - printf("%d,%d\n", *(arr+i), *(p+i)); - } -#endif - for(i=0, p=arr; i<5; i++, p++) { - printf("%d,%d\n", arr[i], *p); - } - for(i=0, p=arr; i<5; i++, arr++) { - printf("%d,%d\n", p[i], *arr); - } - - return 0; -} +#include <stdio.h> + +int main(void) +{ + short arr[5] = {1, 2, 3, 4, 5}; + short *p; //p=arr; p=&arr[0]; short * const arr; + int i; + + p = &arr[0]; + printf("%d,%d\n", p[1], p[3]); + + p = &arr[1]; + printf("%d,%d\n", p[1], p[3]); + +#if 0 + for(i=0, p=arr; i<5; i++) { + printf("%d,%d\n", arr[i], p[i]); + printf("%d,%d\n", *(arr+i), *(p+i)); + } +#endif + for(i=0, p=arr; i<5; i++, p++) { + printf("%d,%d\n", arr[i], *p); + } + for(i=0, p=arr; i<5; i++, arr++) { + printf("%d,%d\n", p[i], *arr); + } + + return 0; +} diff --git a/Project6 - pointer/pointer_practice/7.ptrNarray2.c b/Project6 - pointer/pointer_practice/7.ptrNarray2.c index 9a5f197becc64fa9f1d8bb3e7da60ba1fadd6f3b..db43acd104c8f02ac13858abf66d1aacaeaf7063 100644 --- a/Project6 - pointer/pointer_practice/7.ptrNarray2.c +++ b/Project6 - pointer/pointer_practice/7.ptrNarray2.c @@ -1,41 +1,41 @@ -#include <stdio.h> - -void printData_1(const short *data)//값 변경을 못하게 할 때 -{ - int i; - - for(i=0; i<5; i++) { - printf("%d,%d\n", data[i], *(data+i)); - //data[i] = 9999; //short * data일때 - } -} - -void printData_2(short data[5]) -{ - int i; - - for(i=0; i<5; i++) { - printf("%d,%d\n", data[i], *(data+i)); - } -} - -void updateData(short *data) -{ - int i; - for(i=0; i<5; i++) data[i] += 10; -} - -int main(void) -{ - short arr[5] = {1, 2, 3, 4, 5}; - - printf("-------------------------\n"); - printData_1(arr); - printf("-------------------------\n"); - printData_2(arr); - printf("-------------------------\n"); - updateData(arr); - printData_2(arr); - - return 0; -} +#include <stdio.h> + +void printData_1(const short *data)//값 변경을 못하게 할 때 +{ + int i; + + for(i=0; i<5; i++) { + printf("%d,%d\n", data[i], *(data+i)); + //data[i] = 9999; //short * data일때 + } +} + +void printData_2(short data[5]) +{ + int i; + + for(i=0; i<5; i++) { + printf("%d,%d\n", data[i], *(data+i)); + } +} + +void updateData(short *data) +{ + int i; + for(i=0; i<5; i++) data[i] += 10; +} + +int main(void) +{ + short arr[5] = {1, 2, 3, 4, 5}; + + printf("-------------------------\n"); + printData_1(arr); + printf("-------------------------\n"); + printData_2(arr); + printf("-------------------------\n"); + updateData(arr); + printData_2(arr); + + return 0; +} diff --git a/Project6 - pointer/pointer_practice/8.functionPtr1.c b/Project6 - pointer/pointer_practice/8.functionPtr1.c index 574013e1f0d235ed64d5d731159d8728fb66b4fe..27625914de4fe90761965454f5e73459babc5d68 100644 --- a/Project6 - pointer/pointer_practice/8.functionPtr1.c +++ b/Project6 - pointer/pointer_practice/8.functionPtr1.c @@ -1,43 +1,43 @@ -#include <stdio.h> - -int add(int d1, int d2) { - return d1+d2; -} -int sub(int d1, int d2) { - return d1-d2; -} -int mul(int d1, int d2) { - return d1*d2; -} -int div(int d1, int d2) { - if(d2) return d1/d2; - else { printf("Zero Dived Error!!\n"); return 0; } -} - -int main(void) -{ - int no, rst; - //함수 포인터 - int (*fp) (int, int); //add의 타입을 적어야 한다. //int(int, int) *fp; - //(*fp) : 포인터 변수이고 포인터 변수의 타입은 int(int,int) - - while(1) { - do { - printf("\nSelect(1.add, 2.sub, 3.mul, 4.div, 0.quit) => "); - scanf("%d", &no); - } while(no<0 || no>4); - if(no == 0) break; - - switch(no){ - case 1: fp = &add; break; - case 2: fp = sub; break; - case 3: fp = mul; break; - case 4: fp = ÷ break; - } - - rst = fp(10, 20); - printf("rst => %d\n", rst); - } - - return 0; -} +#include <stdio.h> + +int add(int d1, int d2) { + return d1+d2; +} +int sub(int d1, int d2) { + return d1-d2; +} +int mul(int d1, int d2) { + return d1*d2; +} +int div(int d1, int d2) { + if(d2) return d1/d2; + else { printf("Zero Dived Error!!\n"); return 0; } +} + +int main(void) +{ + int no, rst; + //함수 포인터 + int (*fp) (int, int); //add의 타입을 적어야 한다. //int(int, int) *fp; + //(*fp) : 포인터 변수이고 포인터 변수의 타입은 int(int,int) + + while(1) { + do { + printf("\nSelect(1.add, 2.sub, 3.mul, 4.div, 0.quit) => "); + scanf("%d", &no); + } while(no<0 || no>4); + if(no == 0) break; + + switch(no){ + case 1: fp = &add; break; + case 2: fp = sub; break; + case 3: fp = mul; break; + case 4: fp = ÷ break; + } + + rst = fp(10, 20); + printf("rst => %d\n", rst); + } + + return 0; +}