C 指向结构的指针中的元素数
我至少有一年没有用C语言编写代码了,我正试图通过编写一个非常基本的校准软件来复习它。基本上我有一个C 指向结构的指针中的元素数,c,arrays,pointers,vector,struct,C,Arrays,Pointers,Vector,Struct,我至少有一年没有用C语言编写代码了,我正试图通过编写一个非常基本的校准软件来复习它。基本上我有一个PointCloudstruct typedef struct { gsl_vector ** vectors; gsl_vector * mean; } PointCloud; vectors指向gsl\u向量的数组,mean只是一个gsl\u向量,表示vectors中向量的平均值 现在假设我有一个变量PointCloud*foo,并假设它的内部变量使用malloc()动态分配内
PointCloud
struct
typedef struct {
gsl_vector ** vectors;
gsl_vector * mean;
} PointCloud;
vectors
指向gsl\u向量的数组
,mean
只是一个gsl\u向量
,表示vectors
中向量的平均值
现在假设我有一个变量PointCloud*foo
,并假设它的内部变量使用malloc()
动态分配内存并填充。让bar=foo->vectors
。如何获取bar
中的gsl\u矢量数(即点云中的矢量数)?我尝试过各种组合,例如sizeof(bar)/sizeof(bar[0])
,但这给了我输出1sizeof(bar)
本身给我的值是8。我已经在有27个向量的点云上尝试过了。是一个编译时操作符。当应用于某个指针时,它会给出计算机上指针的大小(在我的x86-64/Linux系统上,它是8字节),并且由于它是在编译时计算的,所以它不依赖于动态分配的堆内存区域的运行时大小
您需要保持任何动态malloc
-ed数组或区域的大小。你可以考虑用一个A来结束<代码> Stutt,并保持它的大小作为以前的代码<结构> <代码> < /P>。在编译时,无法确定<代码>矢量>代码>中的条目数量,这是涉及<代码> siZeOS< /COD>所需的计算。您必须有办法知道向量中有多少个条目。如果你没有那么。。。你怎么能不呢?谢谢你提供的有用信息。是的,别担心,我知道有多少,我只是懒得在结构中给它自己的变量。然后我不理解你的问题。“我只是懒得在结构中给它自己的变量。”但为什么不呢?这很简单,很容易,而且更清晰。你们应该声明向量为数组的指针,而不是指向指针的指针。