본문 바로가기
비트 단기/c

10/30 pointer

by woohyun22 2018. 10. 31.

//포인터 = *
 //ex1
 /*
 short a;
 short *b;
 a = 10;
 *b = 20;//이 코드는 사용할수 없다. b= 생성할때부터 메모리를 가질수 없다.
 */
 
 //ex2
 /*
 short a = 10;
 short *b;
 b = &a;//공유됬다 - 주소를 가지고있는a가 b에게 주소를 준다(이때가 *b 메모리가지기 시작)
 //메모리 공유하면 주소가 같다
 
 printf("%d %d\n", a, *b);//값
 printf("%d %d\n", &a, b);//주소
 
 *b = 20;//*b는 메모리가 존재함(a에게 받음)
 printf("%d \n", a);//b가 라면20개를 나둠
 a = 999;
 printf("%d \n", *b);//공유되면 하나의 값이 바뀌면 공유된 값도 함께 바뀜
 */

 /*
 //ex3
 //포인터 변수는 가장 최근에 받은 주소 한개만을 기억한다.
 short a = 10, b = 20;
 short *c;
 //*c = 30;//지금까지 메모리가없음
 c = &a;
 printf("%d %d %d\n",a,b,*c);

 *c = 30;//a에게 공유받았기 때문에 대입가능
 printf("%d %d %d\n", a, b, *c);//30 20 30

 c = &b;
 a = 999;
 printf("%d %d %d\n", a, b, *c);//999 20 20  - b의 값을 공유받음

 *c = 333;
 printf("%d %d %d\n", a, b, *c);//999 333 333
 //&b = &a;//일반변수는 공유받을수없다!
 */
 /*
 //ex4
 short a = 10;
 short *b, *c;
 
 b = &a;//b는a에게 공유받음 메모리 존재
 c = b;//c도 b에게 공유받음 메모리 존재

 *c = 100;
 printf("%d %d %d\n", a, *b, *c);/100 100 100
 */
 /*
 //ex5
 short a, *b;//일반,포인터
 short *c, d;

 b = &a;//주소는 받았지만 값이 없기에 출력하면 쓰레기값이 나온다.
 c = &d;
 printf("%d %d \n", *b, *c);
 *b = 0, *c = 100;
 printf("%d %d\n", a, d);
 b = c;
 printf("%d %d %d %d\n", a, *b, *c,d);
 */
 short a=10 ,b=20;//일반,포인터
 short *c, *d;
 c = &a;
 d= &b;
 short *t;
 t = c;//c=10 t=10
 c = d;//c=20 d=20 t=10
 d = t;//c=20 d=10 t=10
 printf("%d %d\n",*c,*d);//20 10
 printf("%d %d\n",a,b);//10 20

 c = &a;
 c = &b;//a 주소를 잊음
 c = d;//d가 주소가있다면 줄수있음

 

728x90

'비트 단기 > c' 카테고리의 다른 글

11/2  (0) 2018.11.02
11/1  (0) 2018.11.01
while, scanf,switch  (0) 2018.10.26
연산자 ++ -- for문 1~  (0) 2018.10.25
10/24 c 제어문 1~10  (0) 2018.10.24

댓글