2010. 7. 10. 02:04


제 16장 포인터의 이해 - 1

※ 프로그램은 눈과 손이 아닌....그림과 말로 이해하는 습관으로!


포인터와 포인터 변수

 - 포인터는 변수이다(포인터 변수) : 상수가 될수 있긴함

 - 메모리의 주소값을 저장하기 위한 변수 ==> 포인터를 한다

 - 주소값과 포인터는 다른 의미임

 - 메모리구조를 항상 생각하면서 프로그램 하는 습관을 기르자!


   메모리구조(포인터)


#include <stdio.h>
{
char c = 'a';
int n = 7;
double d = 3.14;
....


↓↓↓


변수 c의 주소는 뭘까요? => 0x1000
변수 n의 주소는 뭘까요? => 0x1001
변수 d의 주소는 뭘까요? => 0x1005

 ☞ 변수의 주소는 주소의 시작번지로 표현된다.

참고 > 당신의 컴퓨터는 몇 bit 시스템인가요?
 -> bit수가 클수록 시스템의 성능은 좋아진다.
 -> 결정적인 bit가 정해지는 이유?? 

@ 즉, 8bit 시스템은 메모리의 주소값이 8자리로 표현된다.
  ex) 0001 0001, 0010 0001

  32비트면 32자리로 표현된다.(2의 32승, 즉 4G 까지 메모리 사용가능)
  그러므로 주소번지개수를 많이 만들수 있다

  8 비트 시스템은 포인터의 크기는 1바이트
  16비트 시스템은 포인터의 크기는 2바이트
  32비트, 64비트 시스템은 포인터가 최하 4바이트가 된다.(32bit = 4byte)

  pn이라는 n의 값을 가르킨다.

  
 


 포인터의 타입과 선언

 - * : 포인터 선언시사용되는 연산자

 - P형 포인터(P*) : P형(data type) 변수의 주소값을 지정
  > int 형 포인터 : int * p ;              // int형 변수를 가리키는 포인터
  > double 형 포인터 : double * lp; // double형 변수를 가리키는 포인터
  > char 형 포인터 : char * ch;      // char형 변수를 가리키는 포인터 

  ex) int* a;
      int * a;
      int *a;   // 이 3가지 다 똑같다.
  

 
주소관련 연산자

 - & 연산자 : 변수의 주소 값 반환(번지 연산자 / 주소연산자)

 - * 연산자 : 포인터가 가리키는 메모리 참조
예제)=============================================================   

#include <stdio.h>

int main()
{
int a = 200;
int *pA = &a;  // &a : a라는 변수의 주소값을 반환하라
// a의 주소값을 pA에 저장하라
// pA의 포인터는 a를 가리킨다
printf("%d \n", a);  // 직접접근
printf("%d \n", *pA);  // 간접접근

// pA자체만 출력한다면, a의 주소값을 출력할거다
// *pA : pA 변수가 가르키는 변수를 뜻함, 즉 a

return 0;
}

예제)=============================================================   

#include <stdio.h>

int main()
{
int a = 100;
int *pA = &a;

printf("pA : %d \n", pA);
printf("&a : %d \n", &a);

(*pA)++; // pA가 가리키는 변수 a의 값을 1 증가시킨다.

printf("a   : %d \n", a);
printf("*pA : %d \n", *pA);

return 0;
}

================================================================   

※(참고) * 용도 

1. 곱셈용도   
2. 포인터 선언   (int *p : p라는 int형 포인터 선언)
3. 포인터를 접근 (*p : p라는 포인터가 가르키는 변수의 값)
 

'프로그래밍 > C' 카테고리의 다른 글

제 18장 포인터의 이해 - 2  (0) 2010.07.10
제 17장 포인터의 이해 - 예제  (0) 2010.07.10
제 15장 1차원 배열 - 2  (0) 2010.07.10
제 14장 1차원 배열 - 1  (0) 2010.07.10
제 13장 C언어의 핵심 함수 - 3  (0) 2010.07.10
Posted by 토실토실천재