【发布时间】:2011-01-16 11:54:16
【问题描述】:
我无法理解如何分配内存 到一个双指针。 我想读取一个字符串数组并存储它。
char **ptr;
fp = fopen("file.txt","r");
ptr = (char**)malloc(sizeof(char*)*50);
for(int i=0; i<20; i++)
{
ptr[i] = (char*)malloc(sizeof(char)*50);
fgets(ptr[i],50,fp);
}
我只是分配了一大块内存而不是这个 存储字符串
char **ptr;
ptr = (char**)malloc(sizeof(char)*50*50);
那会是错的吗?如果是这样,为什么会这样?
【问题讨论】:
-
不要称它为“双指针”——这会让你在精神上走错路——它是指向指针的指针。
-
在 C 中,不要将调用结果转换为
malloc()、realloc()或calloc()- 这是不必要的,并且可能掩盖了缺少原型的严重错误。
标签: c string pointers malloc double-pointer