指向结构的指针中的元素数

时间:2015-06-25 03:55:42

标签: c arrays pointers vector struct

我没有在C中编码至少一年,我正在努力通过编写一个非常基本的校准软件来完善它。基本上我有一个PointCloud结构

typedef struct {
    gsl_vector ** vectors;
    gsl_vector * mean;
} PointCloud;

vectors指向一个gsl_vectorsmean数组只是一个gsl_vector,表示vectors中向量的平均值。

现在假设我有一个变量PointCloud * foo并假设其内部变量具有使用malloc()动态分配的内存并且已填充。让bar = foo -> vectors。如何获得gsl_vectorsbar的数量(即点云中的向量数)?我尝试了各种组合,例如sizeof(bar)/sizeof(bar[0]),但它给了我输出1. sizeof(bar)本身给了我8的值。我在27个向量的点云上试过这个。

1 个答案:

答案 0 :(得分:0)

sizeof operator是编译时运算符。当应用于某个指针时,它会给出机器上指针的大小(在我的x86-64 / Linux系统上它是8个字节),并且因为它是在编译时计算的,所以它不依赖于运行时的大小。动态分配堆内存区域。

您需要保留任何动态malloc - ed数组或区域的大小。您可以考虑使用flexible array member结束struct,并将其大小保留为struct的先前成员