C++ 포인터
-
C++ 포인터 연산Visual Studio/C++ 기초 2013. 11. 25. 22:20
포인터 변수에 대한 연산은 포인터 변수의 자료형과 연관이 있습니다. 포인터 변수에 값을 더하거나 빼는 연산은 포인터 변수가 가리키고 있는 주소에 저장된 자료형의 크기만큼 주소를 증감시킵니다. 만약 변수가 기억된 메모리 주소가 100이라면 포인터 변수의 값은 100이 됩니다. 포인터 변수+1을 수행하면 포인터 변수+1의 직접적인 의미가 아니라 포인터 변수의 자료형의 크기만큼 증가하게 됩니다. 풀어쓰면 ptr+i가 가리키는 주소 : ptr+(i바이트)가 아닌 ptr+(i*sizeof(*ptr)바이트) 포인터 변수에 대한 연산은 메모리에 저장된 자료를 포인터 변수로 처리하기 위해서입니다. 그렇기 때문에 모든 연산자를 사용할 수 있는 것은 아니고, 현재 자료의 다음 또는 이전 자료를 처리하는 증감 연산만 가능합..
-
C++ 배열과 포인터Visual Studio/C++ 기초 2013. 11. 21. 15:55
배열을 사용하기 위해서는 배열명, 배열 크기, 배열 요소를 지정해야 합니다. 배열명은 해당 배열의 시작 주소이고, C++에선 배열명을 사용해서 배열의 시작 위치를 설정합니다. int x[5] = {1, 2, 3, 4, 5}, *ptr; ptr = x; 포인터 변수 ptr에게 배열 x를 대입하였습니다. x는 배열명이기 때문에 해당 배열의 시작 주소 값입니다. 이를 쉽게 설명하면 x[0]의 시작 주소를 포인터 변수 ptr이 가지고 있기 때문에 ptr을 사용해서 배열 x를 처리할 수 있습니다. 구체적으로 표현하면 아래와 같습니다. ptr == &x[0] *ptr == x[0] ptr+1 == &x[1] *(ptr+1) == x[1] ptr+2 == &x[2] *(ptr+2) == x[2] ptr+3 == &x..
-
C++ 포인터Visual Studio/C++ 기초 2013. 11. 5. 20:51
모든 데이터는 메모리 장치에 저장됩니다. 메모리 장치에 저장된 데이터를 참조하기 위해서는 데이터가 지정된 위치, 즉 주소를 지정해서 처리하여야 합니다. 일반적으로 메모리 장치는 1byte 단위로 주소가 지정되고, 메모리의 첫 번째 byte주소는 0번지, 1byte 증가할 때 마다 주소가 1씩 증가합니다. 포인터를 사용할 때 몇가지 주의사항이 있습니다. 1. 사용 전에 반드시 초기화해야 할 것. 2. 포인터 변수의 자료형을 반드시 지정해야할 것. 여기서 포인터는 void형으로 선언할 수 있는데요, 함수에 사용되는 반환 값이 없는 함수를 뜻하지만, 포인터 변수에 사용되는 void는 임의의 자료형을 가리키는 것을 의미합니다. void *pa; int a = 10; 이렇게 선언하면 컴파일 오류가 발생합니다. p..