4 개의 정수로 구성된 전역 구조체 (배열)를 식별해야합니다. 문제는 구조체 배열의 크기를 미리 알 수 없다는 것입니다.C에서 전역 구조체 포인터를 정의합니까?
나는 sth를 만들려고 노력하고 있습니다. 이런 식으로 :
typedef struct
{
int value;
int MAXleft;
int MAXright;
int MAX;
} strnum;
int main()
{
int size;
scanf("%d", &size);
strnum numbers[size];
return 0;
}
나는 포인터를 사용하여이를 수행 할 수 있지만 어떻게 해야할지를 모른다는 말을 들었다.
또한strnum* number;
int size = 0;
scanf("%d",&size);
number = malloc(size * sizeof(strnum));
, 당신은 배열을 사용하여 수행 한 후 메모리를 해제하는 것을 잊지 마세요 :
C에서 malloc이 반환하는 것을 캐스트하지 않습니다. 프로토 타입이 int 인 경우 기본적으로 반환 유형 이후 stdlib.h를 포함하는 것을 잊어 버리면 문제가 발생할 수 있습니다. 캐스팅하지 않으면 당신은 그것을 잡을 것입니다. –
올바른 메모리 양을 할당하면'malloc'의 형 변환에 차이가 있다고 생각하지 않습니다. – sgarizvi
누군가 32 비트 PC에서 malloc 결과의 캐스트를 작성한 프로그램을 컴파일하고 8 바이트 포인터와 4 바이트 int가있는 64 비트 시스템이있는 시스템에서 실행하려고하면 후자가 효과가없는 이유를 이해하려고 정말로 힘든 시간을 보냅니다. 문제는 프로토 타입이 없으면 반환 값이 4 바이트 int로 잘리고 segfault가 발생할 가능성이 높다는 것입니다. –