#include /* : array[10] 배열의 각 값을 각각 0, 1, ... , 9 로 초기화*/
void init_array(int* array) {
int i;
for(i = 0; i < sizeof(array) / sizeof(int); i++) {
array[i] = i;
printf("This is init_array[%d]", array[i]);
}
printf("n");
}
main() {
int array[10];
int i;
init_array(array);
for(i = 0; i < sizeof(array) / sizeof(int); i++)
{
printf("array[%d] : %dn", i, array[i]);
}
}
init_array 함수에 array를 넘겨주면 여기서 array의 길이를 알아내서 각 값들을 초기화시켜주려고 하는데 잘 안 되네요.. 이걸 어떻게 고쳐줘야되는지요?
질문자가 선택한 답변
re: C에서요 배열 초기화하는 함수를 만들려고 하는데..
newpaek2 (2004-03-26 09:33 작성, 2004-03-26 09:46 수정) 이의제기
질문자 평
감사합니다. ^^
#include
void init_array(int *array, int n) {
int i;
printf("함수의 배열 %d\n",sizeof(array));//포인터의 크기가 4라고 나옵니다.
for(i = 0; i < n; i++) {
array[i] = i;
printf("This is init_array[%d]\n", array[i]);
}
printf("\n");
}
void main() {
int array[10];
int i;
printf("메인의 배열%d\n",sizeof(array));//배열의 크기가 40이라고 나옵니다.
init_array(array, sizeof(array) / sizeof(int));
for(i = 0; i < sizeof(array) / sizeof(int); i++) {
printf("array[%d] : %d\n", i, array[i]);
}
}
배열을 포인터로 넘길 때 넘겨받은 함수는 포인터의 크기를 측정하기 때문에 배열의 크기를 알 수가 없습니다. 그러므로 배열의 시작주소와 함께 배열의 크기도 넘겨주어야 합니다.
인쇄하기 | 지식 선물하기 | 스크랩하기 | 내 블로그담기
평가를 하실 때마다 내공1을 드립니다.
평가내공은 하루 최고 10까지 받으실 수 있습니다.
--------------------------------------------------------------
strlen() 함수로 읽어도 될거 같음
'Language > C & C Plus' 카테고리의 다른 글
[C] 로또 자동 생성 프로그램 (0) | 2012.07.13 |
---|---|
[C] 약간 조작한 2진수 8진수 16진수 출력 (0) | 2012.07.13 |
[C] Stack 을 이용한 2진수 8진수 16진수 출력 (0) | 2012.07.13 |
[C] Postfix --> Infix (0) | 2012.07.13 |
[C] JUMIN 체크 (0) | 2012.07.13 |