|
답변에 야간 엇나가지만
C,C++기본을 가르치는 분 중에는 배열 인덱스의 최대값은
max = sizeof(array) / sizeof(type) - 1
이고요 최소값은 계산 할것없이 0이라고 가르치는 분이 계십니다.
가령
int array[200];
int max,min;
int i;
min = 0;
max = sizeof(array) / sizeof(int);
for (i=min; i< max; i++)
printf("%d\n",array[i]);
sizeof(array) / sizeof(type) 는 배열에 저장될수 있는 자료의 갯수입니다. 그래서 마지막 인덱스는 max - 1 이 되는 겁니다.
이방법은 상당히 유용한 방법입니다.
max = sizeof(array) / sizeof(array[0])
라고 int 대신 array[0]를 사용하면 자료형에 관계 없이 사용할 수있습니다.
MFC의 SDI (MDI인지 모르지만)에서 아주 유용하게 사용되고 있는 하이 테크닉입니다.
그럼
조준회 님이 쓰신 글 :
: 원래 C/C++에는 동적 배열이라는 개념이 없습니다.
: 이런 부분들은 모두 포인터 연산으로 해결됩니다.
:
: 아래 질문하신 내용중에 있듯이..
: 주로 malloc/free 나 new/delete로 메모리를 직접 할당해서 사용을 하게됩니다.
:
:
: 곽성주 님이 쓰신 글 :
: : 일반적인 어레이의 최대 최소 인덱스 얻는게 C++에는 기본, 없나보네요..
: :
: : 비베에는 Ubound(), Lbound()
: :
: : 델파이에는 high(), low() 가 있거든요.
: :
: : BCB에는 Variant 타ㅏ입에 한해서 v.ArrayHighBound(), v.ArrayLowBound() 가 있군요 ..
: :
: : 그렇다면 BCB에서 동적어레이 에도 인덱스 최대최소 받는 함수는 없나요?
: :
: : 본것 같기도 한데요 ...
|