배열을 file1.c의 child_prog()
에서 main()
으로 리턴하려고했습니다. 아래에 의사 코드를 제공하려고합니다. 스택 배열에 malloc'ed 배열 할당
#include<stdio.h>
#include<stdlib.h>
int* child_prog(int some_input);
void main(void){
int C[10];
int some_input;
C = child_prog(some_input);
}
int* child_prog(int some_input){
static int out[10];
...
.../*some wizardry*/
return out;
}
이제 컴파일러는 (있는 int * 형이다) (정수 [] 타입이다)
C
에 child_prog로부터 반환되는 값을 할당 할 수 없다는 에러를 발생시킨다. 비록 내가
C
을
int*
으로 만들고
malloc
을 1
ints
으로 만들면 프로그램이 제대로 작동합니다. 컴파일러가 (
C[10]
으로 정의 된 배열이고 그에 따라 포인터로 정의 된)
child_prog
(배열은
static int out[10]
으로 정의되고 다시 포인터로 정의 됨)에서 반환되는 값으로 할당 할 수없는 이유를 이해할 수 없습니다.
알아두기 int *! = int []. 하지만, C를 int C []와는 달리 int * C로 정의하고 malloc에 메모리를 알고, child_prog가 static int 배열에 대한 포인터를 C에 반환합니다. 우회 할 수 없어야합니다. memcpy 할 필요가? – Abhinav
배열에 할당하는 것이 아니라 포인터에 할당하는 경우에는'memcpy'가 필요 없습니다. – MByD
내 용을 많이 죽여 줘서 고마워. 오히려 빨리. – Abhinav