'void 포인터'에 해당되는 글 1건

  1. 2009.05.05 void*
[ Programming ]2009. 5. 5. 15:33
// test.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"

/*
	void형 포인터.
	널(NULL)포인터는 아무것도 가리키지 않는 포인터이다.
	void형 포인터는 어느것이든 가리킬수 있는 포인터.
	왜 어느것이든 가리킬수 있는 포인터냐면, 현재 가리키고
	있는 대상체가 정해져 있지 않는 포인터이기 때문.
*/

int _tmain(int argc, _TCHAR* argv[])
{
	/// void* 정의.
	/// 포인터 변수이기 때문에 주소값만을 할당 할 수 있다.
	void* voidp;

	/* void형 포인터 변수의 성질.
	1. 어떠한 형 변환(캐스트 연산자 사용) 없이도 void형 포인터 변수에 대입이 가능.
	2. void형 포인터 변수에서 값을 읽을때는 반드시 캐스트 연산자를 사용.
	3. *연산자(간접지정 연산자)를 사용할 때는 항숭 캐스트 연산자를 사용.
	4. void형 포인터 변수에 ++, -- 를 사용할 때에는 항상 캐스트 연산자를 사용.
	*/

	int	test_int	= 1;
	float	test_float= 2;
	double	test_double= 3;
	char	test_char	= 4;	

	/// 위의 성질 1.
	voidp = &test_int;
	//voidp = &test_float;
	//voidp = &test_double;
	//voidp = &test_char;

	/// 성질 2.
	std::cout << "test_int : " << *(int*)voidp << std::endl;

	/// 성질 3 - 포인터 변수가 가르키는 곳에서 지정한 바이트 수 만큼 읽어 오라는 의미(*)가 없음.
	/// error C2100: 간접 참조가 잘못되었습니다.
	std::cout << "test_int: " << *voidp << std::endl;

	/// 성질 4 - 성질 3과 같이 지정한 바이트 형을 알아야 그 형 만큼의 분기를 할수 있는데 모르기 때문
	return 0;
}

'[ Programming ]' 카테고리의 다른 글

const  (0) 2009.05.14
가변인자  (0) 2009.05.13
값에 의한 전달 보다는 상수객체 참조자에 의한 전달 방식을 택하는 편이 대개 낫다.  (2) 2009.05.02
opengl로 만든 배경 그림  (0) 2009.05.01
explicit  (0) 2009.04.30
Posted by 냉동