[C/C++]배열의 길이를 알아보자..

프로그래밍/C/C++/etc 2009. 8. 11. 10:02 posted by 야매코더
매일 매일 코드를 들여다 보면
아침에 작성한 코드를 점심먹구 와서는 왜 이리 만들었을까 하는 고민이 들때가 있습니다.
이제 기억력이 감퇴되는 나이가 되어 그런걸까요...ㅜㅜ

암튼 이번에는

배열의 길이를 한번 구해보도록 하겠습니다.

JAVA 나 C++ 에서는 그냥 대충 구하는 함수가 있어서인지 별 고민 안했었는데
C 로 작성하다 보니 이런것도 고민이 되는군요.

배열에는 종류가 많이 있겠죠.
숫자의 배열이 있을테고 문자의 배열이 있을테고..기타..배열이 있을껍니다.

그중에 많이 쓰는 문자 배열과 숫자 배열에 대해 좀 보겠습니다.

1. 문자배열 길이 알아내기
int cha_array_length(char *input)
{
    int count=0;
    while(input[count] != '\0') count++; 
    return count;
}

간단하죠?
배열이름을 입력하면 길이가 반환됩니다.

2. 숫자배열 길이 알아내기.
문제는 숫자배열인데요. 위와 같은 방법으로 하면 배열안에 0값이 들어 있으면 거기서 끝을 알리는군요.(해보니 그렇네요.)
대충 배열길이를 구하는 방법은 sizeof() 를 써서 하는 방법이 있죠.

int nLength;
int *tmp;
nLength = sizeof(tmp)/sizeof(int);

이런식으로 배열의 길이를 구하면 되는데요. 함수에 배열을 인자로 넘기고 받을땐 문제가 생기네요.
포인터로 넘기고 받다보니 길이에서 포인터변수의 크기만 나옵니다. 4바이트?

검색을 해보니 kldp 사이트에도 누군가 질문을 올렸네요..

어쩜 저리 제맘과 같을까요. 저도 바로 이게 알고 싶은데요. 답변에는 전혀 다른 방식들이 적혀있네요.
뭐 없을라나.
위의 함수같이 만들 방법을 못찾겠다.

그냥

int getLength(int *array, int length);

이런식으로 배열값 넣을때 길이 넣는 방식으로 구현했습니다.
다른 방법을 만들어 보려구 했는데 어째 잘 안되네요. C++이나 자바가 참 편리한게 많은 언어인거 같아요.

그럼 여기까지~


To be continued.    -夜昧-