2011. 4. 11. 14:55

C++에서 배열을 구하는 방법은 많습니다.

그중 포인터로 넘어온 배열의 개수를 구하는 방법을 알아보도록 하겠습니다.

 

 

1.  일반적으로 배열 구하는 방법
int a = inteof(Temp) / sizeof(Temp[0]);

 

그런데 이 방법은 정작 포인터로 넘어온 주소는 배열을 구하지 못합니다.

그래서 보통은 매개변수로 배열의 개수를 보내주는 방식을 많이 사용하죠.

 

어쩌면 당연한데.....'sizeof'는 변수의 크기를 리턴하므로 포인터를 넣으면 포인터의 대상이 아닌 포인터 자체의 크기를 리턴하기 때문입니다.

(그래서 포인터를 위 코드로 구하면 '1'이 나옵니다.)

 

 

2. 포인터로 넘어온 배열 개수 구하는 방법

'_countof'를 이용하면 포인터로 넘어온 배열의 개수를 구할 수 있습니다.

void Temp( int *intTemp )
{
	int a = _countof(intTemp);
}

 

'a'에는 포인터로 넘어온 배열의 개수가 들어가게 됩니다.

 

 

마무리

다른 언어 다루다가 'C'를 다루면 이런 곳에서 실수하게 되는 것이죠 ㅎㅎㅎ