c++에서 배열을 구하는 방법은 많습니다.
그중 포인터로 넘어온 배열의 갯수를 구하는 방법을 알아보도록 하겠습니다.


 
1. 일반적으로 배열구하는 방법

int a = inteof(Temp) / sizeof(Temp[0]);



그런데 이 방법은 정작 포인터로 넘어온 주소는 배열을 구하지 못합니다. 그래서 보통은 매개변수로 배열의 갯수를 보내주는 방식을 많이 사용하저.

어쩌면 당연한 것인데.....사이즈오브는 변수의 크기를 리턴하므로 포인터를 넣으면 포인터의 대상이 아닌 포인터자체의 크기를 리턴하기 때문입니다.(포인터를 위 공식으로 넣으면 1이 나옵니다.)

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


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

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



  1. Favicon of http://boycrow.tistory.com BlogIcon 까마귀 소년 2011.12.30 02:51 신고  Address  Edit/Delete  Reply

    배열은 연속적인 메모리 구조로 사용하기 편하다는 장점이 있는데
    쓸데없는 메모리 낭비가 있다는 문제점이 있어요...

    때문에 C++ 의 스탠다드 라이브러리에서 제공하는 리스트나 벡터등을 이용해서 사용하시길 바랍니다.ㅋ

    • Favicon of http://blog.danggun.net BlogIcon 당근천국 2011.12.30 16:14 신고  Address  Edit/Delete

      접근의 용의성외에도 속도도 리스트나 백터에 비해 빠릅니다.(재정열없다면 많이 차이는 업겠지만 말이죠 ㅎㅎ)
      어차피 용도에 따라서 쓰는 거죠 ㅎㅎㅎㅎ

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바