티스토리 뷰

프로그래밍 언어/C++

포인터 기초

거북이의 기술블로그 2024. 7. 1. 21:34
1. 포인터 선언
2. 포인터 특징
3. 포인터 연산

 

포인터 선언

 TYPE * [포인터 이름] = [주소값];
  • TYPE : int, double, class, 객체 등등...
  • 포인터 이름 : 원하는 이름 ( 대체로 pointer의 약자 "ptr"을 이용)
  • 주소값 : 포인터가 가리킬 값의 주소

 

 

포인터 특징

  • 포인터의 크기 : 4 Byte (32bit)  / 8 Byte (64bit)
    • 주소값의 크기가 64비트의 컴퓨터의 경우 8바이트를 차지함 
  • 포인터가 원하는 주소값의 Type과 일치해야함
int num = 10;
double *ptr = # // 불가능

 

  • 함수 인자로서 사용 가능
    • 함수 인자로 사용할경우 값을 복사해서 사용하는 것이 아닌, 원본값 그대로 사용
void Test(int *num)
{
    // 함수 바디
    num++;
}

int main()
{
...
    int n = 10;
    Test(&n);
    cout << n << endl; // n = 11
...

 

 

 

포인터 연산

  • 주소 연산자
    • "&" : 해당 변수의 주소값을 나타낼 때 사용
    • ex) int num = 10;  
    • ( num 변수의 주소값 : &num )
  • 산술 연산자
    • 포인터에는 Type이 있기에 해당 크기 기준 "1"로 산정한다
    • ex) int *ptr  = & num; 
    • ( ptr + 1 => ptr을 현재위치에서 4바이트( == int) 크기만큼 이동한 포인터지점을 의미 )
  • 간접 연산자
    • " * " : 포인터가 가리키는 변수의 실제 값을 다룰 때 사용
    • ex)  int *ptr = &num;
    • ( *ptr = 30; // num에 저장되어있는 수가 30으로 변경된다)
  • 간접 멤버 연산자
    • "->" : 구조체 특정 멤버 다룰 때 사용
    • 실제적으로, 어셈블리어 코드로 확인하면, 처음 지점에서 산술연산을 통해 해당 지점으로 움직인 것
struct StatInfo

    int _hp;
    int _star;
}


int main ()
{

    StatInfo *s;

    // 동일한 의미
   (*s)._star = 30;
    s->_hp = 20;
    // (1).  s = s + 1;
    // (2). (*s) = 20; 
...

}

 

    •  

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

배열 기초  (0) 2024.07.01
참조(&) 기초  (0) 2024.07.01
함수 기본 ( C++ )  (0) 2024.07.01
enum  (0) 2024.06.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함