您好,我的一个功能有问题。声明如下:
int load_clusters(char *filename, struct cluster_t **arr)
而且我不知道如何在 **arr 之前使用这两个指针。 我希望我这样调用它:
struct cluster_t *clusters;
load_clusters("file.txt",&clusters);
但我不确定这是否正确。
在函数中我需要为其分配内存。 我想应该是这样的。
arr = (struct cluster_t**)malloc(count * sizeof(struct cluster_t*));
arr[0...x] = (struct cluster_t*)malloc(sizeof(struct cluster_t));
arr[0...x]->size += 1;
.
.
.
但毕竟我需要调用函数来打印簇。
void print_clusters(struct cluster_t *carr, int narr)
{
printf("Clusters:\n");
for (int i = 0; i < narr; i++)
{
printf("cluster %d: ", i);
print_cluster(&carr[i]); AND THIS DOESN'T WORK AS I EXPECT
}
}
感谢所有帮助;-)
最佳答案
在函数 load_clusters
中,arr
是一个局部变量,因此对其所做的任何更改都不会反射(reflect)在调用方中。
您拥有的是要分配给的指针变量的地址。因此取消引用它并为 struct cluster_t 数组分配空间。
*arr = malloc(count * sizeof(struct cluster_t));
关于具有两个指针的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40848280/