ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 포인터 기초
    프로그래밍 언어/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
    Define( + inline , constexpr)  (0) 2024.06.21
Designed by Tistory.