-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlecture_0927.c
113 lines (70 loc) · 2.91 KB
/
lecture_0927.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// 2022-09-27
// 포인터에 대해 공부한 날...
// 교재 예제 다시 풀어보면서 c 포인터에 대해 더 공부해보자...
#include<stdio.h>
// int a; 란?
// a라는 변수를 만들고 이 안에 정수형 데이터 (값)를 저장할 것이다.
// 포인터 변수란?
// 주소 값을 변수에 저장한다.
// 만약, &a 가 1000 이라면 할당받는 데이터는 1000번지부터 자료형의 크기에 따라 저장.
// int* p; // 메모리 공간의 주소값만을 저장한다.
//
int main(void){
// int a = 128;
// char* pc = &a;
// int* pi = &a;
// float* pf = &a;
// double* pd = &a;
// printf("\n&a : %p, a : %d\n",&a,a);
// printf("pc : %p, *pc : %d\n",pc,*pc);
// printf("pi : %p, *pi : %d\n",pi,*pi);
// printf("pf : %p, *pf : %d\n",pf,*pf);
// printf("pd : %p, *pd : %d\n",pd,*pd);
// 직접 접근 - 간접 접근
// int a,b,c;
// int *pa, *pb, *pc;
// a = 6;
// b = 2;
// pa = &b;
// pb = pa;
// pc = &c;
// pa = &a;
// *pb = 8;
// *pc = *pa;
// *pc = a + *pb +*&c;
// printf("\na : %d, b : %d, c : %d\n",a,b,c);
// printf("*pa : %d, *pb : %d, *pc = %d\n",*pa,*pb,*pc);
// int a = 10,b = 20;
// int *pa = &a;
// int *pb = &b;
// printf("\n&a : %p\n", &a);
// printf("pa : %p, pa + 1 : %d\n",pa, pa + 1); // 1004
// printf("pa : %p, pa - 1 : %d\n",pa, pa - 1); // 996
// // printf("pa : %p, pa + pb : %p\n",pa, pa + pb); // 곱셈, 나눗셈은 불가능
// printf("pa : %p, pa - pb : %p\n",pa, pb - pa);
// ############################################################################################
// ############################################################################################
// 포인터 예제 ! 매우 중요 !!!
// char a = 'A';
// int b = 10;
// float c = 10.5f;
// double d = 10.7;
// printf(" ### 변경 전 ### \n a : %c, b : %d, c : %4.2f, d : %4.2f\n\n",a,b,c,d);
// char *pa = &a;
// int *pb = &b;
// float *pc = &c;
// double *pd = &d;
// // a = a + 1; // 직접접근
// // *pa = *pa + 1; // 간접접근
// // 변수의 값에 직접 접근하지 않고, 포인터에 간접 접근해서 값을 바꾸는 방법 !!!
// *pa += 1; // (*pa)++;
// *pb += 1; // (*pb)++;
// *pc += 1; // (*pc)++;
// *pd += 1; // (*pd)++;
// // 또 가능한 방법들
// // printf("변경 후\n a: %c, b : %d, c : %4.2f, d : %4.2f",*pa + 1,*pb + 1,*pc + 1,*pd + 1);
// printf(" ### 변경 후 ### \n a : %c, b : %d, c : %4.2f, d : %4.2f\n\n",a,b,c,d);
// ############################################################################################
// ############################################################################################
return 0;
}