나는 C에서 완전히 새로운 기능으로 배열을 초기화하려고했습니다.함수에서 초기화 배열
주 방법의 값을 인쇄하려면 항상 세그먼트 오류가 발생하기 때문에 작동하지 않습니다.
static void array(int *i)
{
int j = 0;
i = (int *) malloc(5 * sizeof (int));
for (j = 0; j < 5; j++) {
i[j] = j;
}
for (j = 0; j < 5; j++) {
printf("Hello: %d\n", i[j]);
}
}
/* Main entry point */
int main(int argc, char *argv[])
{
int j;
int *i = NULL;
array(i);
for (j = 0; j < 5; j++) {
printf("Hello: %d\n", i[j]);
}
return 0;
}
누군가가 코드를 수정하고 작동 방식을 설명 할 수 있다면 좋을 것입니다.
'난 = (INT의 *)의 malloc (5 * sizeof 연산자는 INT가)(); '에만 영향을 포인터가 호출자의 포인터가 아니라 포인터의 사본. 내가 중복 된 것을 찾아 보자. –
즉, 포인터는 참조가 아닌 값으로 전달되므로 업데이트되지 않습니다. array() 함수를 끝낼 때 원래 값을 얻었습니다. – m0skit0
'malloc'의 결과를 캐스트하지 마십시오. – chris