2012. 7. 13. 14:38

#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() 함수로 읽어도 될거 같음

Posted by 몰라욧