본문 바로가기

포인터

무슨 타입이든 가리킬 수 있는 void 포인터 다 좋은데 문제는 가리킬 수만 있고. 뭘 할수는 없음. void포인터는 모든 타입을 가리킬 수 있지만 해당 변수가 어떤 타입인지는 저장하지 않기때문에 주소를 저장하는 용도로만 사용된다.[솔직히 말해서 이걸 왜 쓰는지는 모르겠다.] 이 포인터를 사용하려면 타입이 있는 포인터로 형변환을 시킨 후에 사용해야만 한다. 뭔소린지 잘 모르겠으니 예제 코드를 작성하자. #include using namespace std; int main() { int i = 300; void* pv = &i; int* pi = (int*)pv; cout 더보기
포인터의 종류 앞서 사용한 int* 이라는 타입 이름은 int* 즉 int타입의 변수만 가리킬 수 있는 포인터 의 선언이다. 고로 int*로 설정했다면 int타입 이외의 변수를 포인터로 사용할 수 없다. 그렇다면 여기서 예시. 코드. 또한 unsigned int와 int 같은 사인이 다른 타입간도 선언이 불가능하다. ////////////////////////////////////////// #include using namespace std; int main() { int i = 300; int* pi = &i; char c = 'C'; char* pc = &c; float f = 700.5f; float* pf = &f; bool b = true; bool* pb = &b; short int s = 456; sho.. 더보기
흔하디 흔한 포인터의 개념 -1 존나게 흔한 비유로 손가락과 실체. 라고 함. 말 그대로 포인터는 어떠한 위치를 가리키고있는 값 이기 때문. 포인터를 사용해야 하는 이유 중 하나는 원래 값 을 변동해선 안되는 경우. 포인터로 그 위치만을 바꾸어 표현하는 것[정렬] 이 있다. 메모리의각 방은 한 바이트를 기준으로 나뉘어있고 이 방마다 주소가 부여되어 있다. char타입은 1바이트 이기에 그 위치의 주소가 변수의 위치 지만 int타입의 경우는 4바이트를 가지는데 이럴 경우에는 가장 앞의 주소가 그 위치가 된다. 주소 값을 알아내려면 해당 변수 앞에 &를 붙이면 된다. 관련 예제 코드. #include using namespace std; int main() { char c = 'B'; int i = 19; float f = 4.5f; cout 더보기