typedef struct {
long blarg;
} item;
typedef struct
{
item* items;
int size;
} list;
목록 및 항목 구조체는 매우 간단합니다.C 동적 목록 문제
list l;
l.size = 3;
realloc(l.items, l.size*sizeof(item));
목록을 작성하여 3 개의 항목을 포함하도록 할당하십시오. 를 인쇄 할 때
item thing;
item thing2;
item thing3;
thing.blarg = 1337;
thing2.blarg = 33;
thing3.blarg = 123;
l.items[0] = thing;
l.items[sizeof(item)+1] = thing2;
l.items[(sizeof(item)*2)+1] = thing3;
일부 항목을 작성하고이 목록에 추가 ...하지만 :
printf("List 0: %ld\n", l.items[0].blarg);
printf("List 1: %ld\n", l.items[sizeof(item)+1].blarg);
printf("List 2: %ld\n", l.items[(sizeof(item)*2)+1].blarg);
List 0: 1337
List 1: 33 {
List 2: 1953720652 !
모든 잘못 않았다
?
'items' 멤버 목록을 구분할 때'sizeof' 연산이 올바르지 않습니다. C에서 포인터 연산에 대해 읽어 볼 것을 제안합니다. 컴파일러는 인덱싱되는 포인터의 크기 *에 인덱스 오프셋 요청을 곱한 값에 따라 올바른 바이트 오프셋을 생성합니다. – WhozCraig
realloc 된 것에 realloc 호출의 값을 할당 할 필요가 없습니까? – user2357112
사실, 크기를 조정하기 전에 먼저 어떤 저장소를 malloc 할 필요가 없습니까? – user2357112