gpt4 book ai didi

c - 指向结构体的指针中的元素数量

转载 作者:行者123 更新时间:2023-11-30 19:42:44 26 4
gpt4 key购买 nike

我至少有一年没有用 C 语言编写代码了,我正在尝试编写一个非常基本的校准软件来温习它。基本上我有一个 PointCloud 结构

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

vectors 指向一个 gsl_vectors 数组,而 mean 只是一个表示 vector 平均值的 gsl_vector vector 中。

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

最佳答案

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

您需要在某处保留任何动态 malloc 数组或区域的大小。您可以考虑以 flexible array member 结束您的 struct并保持其大小作为该结构体的先前成员

关于c - 指向结构体的指针中的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com