struct node {int n; int k; int arr[n]};
컴파일 전에 배열 n의 크기를 알 수 없습니다. 실행 중에 사용자로부터 가져옵니다.구조체의 int 배열 멤버를 초기화하는 방법은 무엇입니까?
struct node {int n; int k; int arr[n]};
컴파일 전에 배열 n의 크기를 알 수 없습니다. 실행 중에 사용자로부터 가져옵니다.구조체의 int 배열 멤버를 초기화하는 방법은 무엇입니까?
이 코드에서 참조를 가져올 수 있는지, 작동 여부는 확실하지 않지만이 참조를 참조 할 수 있습니다.
my_struct_t *myStruct;
size_t noOfElements;
size_t completeSize;
int index;
/* ...code which sets the number of elements at runtime... */
completeSize = sizeof(my_struct_t) * noOfElements;
myStruct = malloc(completeSize);
memset(myStruct, 0, completeSize);
/* ...and then access it as if it were an array...*/
myStruct[index].someInt = 10; // index < noOfElements
메모리는 구조 자체에 할당 할 수는 없지만, 당신이 당신의 구조 배열에 대한 포인터를 정의 할 수 있습니다 다음 나중에 'N'의 크기의 malloc 또는 새로운()를 사용하여 메모리를 할당 할 수 있습니다 .
다음은 구조를 정의 할 수있는 방법입니다.
fun() {
node obj;
obj.arr = (int*)malloc(sizeof(int)*obj.n);
}
2) 새로운()
fun() {
node obj;
obj.arr = new int(obj.n);
}
를 사용하여 :
struct node {int n; int k; int *arr};
은의 malloc을 사용하여 다음과 같이 구조의 객체를 사용하여 할 수있는 메모리,
1)을 할당하려면
이것은 숙제처럼 들립니다. –