내가 C. 동적 1D 배열을 만드는 방법을 배우고 아래 코드는이 작업을 수행하려고 :C의 동적 배열 - malloc/realloc에 대한 제 이해가 정확합니까?
- 이 의 malloc를 사용하여, 두 배를 보유하고 길이 (10)의 동적 배열을 만듭니다.
- 배열의 각 항목을 j = 0,1, ..., 9에 대해
j/100
으로 설정하십시오. 그런 다음 을 인쇄하십시오. - realloc을 사용하여 추가로 빈 항목을 어레이 끝에 추가하십시오.
- 새 항목을
j/100
으로 설정하고 각 항목을 다시 인쇄하십시오.
테스트
double* data = (double*)malloc(10*sizeof(double));
for (j=0;j<10;j++)
{
data[j]= ((double)j)/100;
printf("%g, ",data[j]);
}
printf("\n");
data = (double*)realloc(data,11*sizeof(double));
for (j=0;j<11;j++)
{
if (j == 10){ data[j]= ((double)j)/100; }
printf("%g, ",data[j]);
}
free((void*) data);
질문
1) 나는이 권리를 코딩하고 있습니까?
2) 자습서 malloc
을 사용하고 (double*)
을 앞에 붙이지 마십시오. 예 : 이 비주얼 스튜디오 2010 나를 위해 컴파일되지 않습니다
int *pointer;
pointer = malloc(2*sizeof(int));
는 윈도우 7 오류 "void 형식의 값을 int 형의 실체에 할당 할 수 없습니다"입니다.
왜 내가이 튜토리얼에서 작동합니까? 필자는 그들이 사용한 컴파일러가 내 예제에서 자동으로 (int*)
을 채우기 때문에 그것이 맞는지 추측 할 수 있습니까?
"void 형식의 값을 int 형식의 엔터티에 할당 할 수 없습니다"는 * C * 컴파일러에서 생성해야하는 오류가 아닙니다. 문제는 * C++ 컴파일러 *를 사용하고 있다는 것입니다. 소스 파일의 이름이 ' .c'인지 확인하십시오. –