포인터 Pinter
ㄴ 주소를 저장하는 변수 (4byte)
ㄴ 포인터는 변수의 주소를 저장한다.
1) 선언
자료형 *변수명;
2) 사용
포인터명 = &일반변수명;
ㄴ 주소 : 변수명 앞에 &앤퍼센드를 붙임
ㄴ 주소만 저장할 수 있음
// 포인터
int a = 10; // 일반변수의 선언과 초기화(값 대입)
int *p = &a; // 포인터변수의 선언과 초기화(일반변수 주소 대입)
//
char c = 0; // 1 byte
int n = 0; // 4 byte
double d = 0; // 8 byte
char *cp = &c; // 4 byte(on 32 bits)
int *np = &n; // 4 byte
double *dp = &d; // 4 byte
printf("c의 사이즈는 %d 이다.\n", sizeof(c));
printf("n의 사이즈는 %d 이다.\n", sizeof(n));
printf("d의 사이즈는 %d 이다.\n", sizeof(d));
printf("\n");
printf("cp의 사이즈는 %d 이다.\n", sizeof(cp));
printf("np의 사이즈는 %d 이다.\n", sizeof(np));
printf("dp의 사이즈는 %d 이다.\n", sizeof(dp));
printf("\n");
printf("c의 주소는 %p 이다.\n", &c); // %p 16진수 자료형
printf("n의 주소는 %p 이다.\n", &n);
printf("d의 주소는 %p 이다.\n", &d);
printf("\n");
printf("포인터 cp의 값은 %p 이다.\n", cp);
printf("포인터 np의 값은 %p 이다.\n", np);
printf("포인터 dp의 값은 %p 이다.\n", dp);
printf("\n");
printf("포인터 cp의 주소는 %p 이다.\n", &cp); // c와 cp의 주소는 다름
printf("포인터 np의 주소는 %p 이다.\n", &np);
printf("포인터 dp의 주소는 %p 이다.\n", &dp);
printf("\n");
// 값을 대입하는 2가지 방법
// 1) 직접
int a = 10;
// 2) 간접 (포인터 변수를 활용한, 주소 접근방식)
int *p = &a;
*p = 20;
printf("a : %d\n", *p);
// #포인터가 필요한 이유
// . 값을 직접 대입을 하려면 해당 지역(함수) 안에 있는 변수만 활용이 가능.
// . 다른 지역에 있는 변수를 참조하려면 '주소값'이 필요함. -> 주소를 담은 포인터 변수
// 예) scanf 함수의 사용
int age;
scanf("%d", &age); // scanf("%d", &age);
// parameter 2개를 받음 (1, 2)
// 1. 자료형
// 2. 변수의 주소값
printf("age : %d", age);
'C > ☞' 카테고리의 다른 글
[44] 연습문제 : 포인터 (0) | 2020.07.23 |
---|---|
[43] 배열과 포인터 (0) | 2020.07.23 |
[41] 셔플 (0) | 2020.07.23 |
[40] 정렬 (0) | 2020.07.23 |
[39]-A. 회원가입 (0) | 2020.07.23 |
댓글