目前,我尝试理解 C 中的动态数组。当我为指针“ptr”分配内存时,它可以在不输入我需要的元素数量(在 malloc 函数中)的情况下工作。
现在,问题是,不明白它为什么起作用。
如果有人能给我一些建议,那就太好了。谢谢。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct daten
{
char name[20];
int alter;
};
int main(void)
{
struct daten *ptr;
int i;
ptr = malloc(sizeof(struct daten *)); //works fine!!
//ptr = malloc(sizeof(struct daten *)*4);
strcpy(ptr[0].name, "Daniel");
ptr[0].alter = 23;
strcpy(ptr[1].name, "Fabian");
ptr[1].alter = 29;
strcpy(ptr[2].name, "Helmut");
ptr[2].alter = 34;
strcpy(ptr[3].name, "Katrin");
ptr[3].alter = 21;
for(i = 0; i<4; i++)
{
printf("%s\t", ptr[i].name);
printf("%d\n", ptr[i].alter);
}
return 0;
}