ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 포인터 연산
    Visual Studio/C++ 기초 2013. 11. 25. 22:20

    포인터 변수에 대한 연산은 포인터 변수의 자료형과 연관이 있습니다. 포인터 변수에 값을 더하거나 빼는 연산은 포인터 변수가 가리키고 있는 주소에 저장된 자료형의 크기만큼 주소를 증감시킵니다.

    만약 변수가 기억된 메모리 주소가 100이라면 포인터 변수의 값은 100이 됩니다. 포인터 변수+1을 수행하면 포인터 변수+1의 직접적인 의미가 아니라 포인터 변수의 자료형의 크기만큼 증가하게 됩니다.

    풀어쓰면

    ptr+i가 가리키는 주소 : ptr+(i바이트)가 아닌 ptr+(i*sizeof(*ptr)바이트)

     

    포인터 변수에 대한 연산은 메모리에 저장된 자료를 포인터 변수로 처리하기 위해서입니다.

    그렇기 때문에 모든 연산자를 사용할 수 있는 것은 아니고, 현재 자료의 다음 또는 이전 자료를 처리하는 증감 연산만 가능합니다.

     산술 연산자 

     +, -, ++, --

     주소 연산자

     &, *

     대입 연산자

     =, +=, -=

     기타 연산자

     sizeof

    예제를 들겠습니다.

    #include <iostream>
    using namespace std;

    void main(){
     int p[] = {10, 20, 30};
     int *pp;

     pp = p;

     cout << "*pp + 1 : " << *pp+1 << "\n";
     cout << "*(pp + 1) : " << *(pp+1) << "\n";
     cout << "*pp++ : " << *pp++ << "\n";
     cout << "(*pp)++ : " << (*pp)++ << "\n";
     cout << "*++pp : " << *++pp << "\n";
     cout << "++*pp : " << ++*pp << "\n";
    }
     

    'Visual Studio > C++ 기초' 카테고리의 다른 글

    C++ 문자열 정렬  (0) 2013.12.06
    C++ int argc, char *argv[]  (1) 2013.12.05
    C++ 배열과 포인터  (0) 2013.11.21
    C++ 다차원 배열  (0) 2013.11.07
    C++ 1차원 배열  (2) 2013.11.07

    댓글

Designed by Tistory.