[C/C언어]


▩ 포인터(Pointer)
   - Pointer는 지시자의 뜻
   - 기억장치의 주소를 변수처럼 사용이 목적
   - 포인터 변수의 선언: 데이터 타입 *포인터변수명
   - & 연산자: 변수의 주소를 알려줌
   - 출력은 주소는 양수만 있음으로 %u로 출력함
   - * 표시는 포인터 변수 선언문이 아닌 곳 즉 수식문에서는 그 포인터 변수가 가지고 있는 주소의 값을 가지고 옴
   - 포인터 변수는 Borland C에서는 2바이트, Visual C++에서는 4바이트임
   - 포인터를 사용하면 함수로 인자의 주소를 전달할 수 있어 매우 편리하다.
     scanf("%d", &kuk);의 경우를 이해할 것. 
   - 포인터 변수는 더하거나 빼는 연산을 할 수 있다.
     . 포인터 변수 + 1: 포인터 변수가 가리키는 곳의 주소가 포인터 변수의 데이터형 만큼 증가한다.
     . *포인터 변수 + 1: 포인터 변수가 가리키는 곳의 값을 1 증가 시킨다.
     . *(포인터 변수 + 1): 포인터 변수가 가리키는 곳의 주소를 포인터 변수의 데이터형 만큼 증가시킨 후 그 값을 1 증가시킨다.


1. 포인터 변수의 선언
     int k=10;
     int *kp = &k;
     printf("%d\n", *kp);  라고 선언하면
     . int *kp는 포인터 변수를 의미한다.
     . &k는 k변수의 주소를 의미한다.
     . 포인터 변수 kp는 k의 주소를 저장한다.
     . kp는 int형 포인터 변수임으로 int형 변수만 저장할 수 있다.
     . 수식문에서 *kp라고하면 kp가 값으로 가지고있는 주소의 값을 가져온다.


2. 포인터 변수의 작동

   포인터 형 변수              변수
======================================
     값: 1050                  'A'
 
         p ----------------┐     c
                                    │
   주소: 1000                   └-> 1050
--------------------------------------  


3. 아래와 같이 선언된 경우 c 변수는 1바이트를 버린다., Visual C는 무조건 4바이트씩 사용
   char b = 'B';
   char c = 'A';
   int i = 10;
   float f = 2.1;
   char c1 = 'A';

문자형 변수 b의 값은 B입니다.
문자형 변수 b의 주소는 65525입니다.
문자형 변수 c의 값은 A입니다.
문자형 변수 c의 주소는 65524입니다.
정수형 변수 i의 값은 10입니다.
정수형 변수 i의 주소는 65522입니다.
실수형 변수 f의 값은 2.100000입니다.
실수형 변수 f의 주소는 65518입니다.
문자형 변수 c1의 값은 A입니다.
문자형 변수 c1의 주소는 65517입니다.


   char c = 'A';
   int i = 10;
   float f = 2.1;
   char c1 = 'A';

문자형 변수 c의 값은 A입니다.
문자형 변수 c의 주소는 65525입니다.
정수형 변수 i의 값은 10입니다.
정수형 변수 i의 주소는 65522입니다.
실수형 변수 f의 값은 2.100000입니다.
실수형 변수 f의 주소는 65518입니다.
문자형 변수 c1의 값은 A입니다.
문자형 변수 c1의 주소는 65517입니다.


★ Visual C에서의 결과
문자형 변수 b 의 값은 B입니다.
문자형 변수 b 의 주소는 1245052입니다.
문자형 변수 c 의 값은 A입니다.
문자형 변수 c 의 주소는 1245048입니다.
정수형 변수 i 의 값은 10입니다.
정수형 변수 i 의 주소는 1245044입니다.
실수형 변수 f 의 값은 2.100000입니다.
실수형 변수 f 의 주소는 1245040입니다.
문자형 변수 c1 의 값은 A입니다.
문자형 변수 c1 의 주소는 1245036입니다.


5. 포인터 변수와 주소 할당의 이해
   char c='A';
   char *cp = &c;  <==>  Integer i = new Integer();


6. 포인터 변수의 성질
   char c='A';
   - &c : c변수의 주소
   - c  : c변수의 값

   char *cp=&c;
   - &cp: cp 포인터 변수 자체의 주소
   - cp : cp 포인터 변수가 값으로 가지고 있는 주소
   - *cp: cp 포인터 변수가 값으로 가지고 있는 주소의 값

Posted by 김윤석

카테고리

놀며즐기고 공부하기 (685)
 IT 정보 (653)
 재테크 (0)
 엔터테이먼트 (11)
 인터넷마케팅 (0)
 사이트 추천 (1)
사이드바 열기