有没有办法在C ??
中动态找到结构大小Sizeof是编译时运算符..那么另一种选择是什么。
如果我们可以在一个结构中动态分配数组(灵活数组),那么动态地找到结构大小也应该在那里.Plz帮助我...
答案 0 :(得分:1)
当你在C中动态分配数组时,如果你想知道数组的大小,你也必须记住它的大小!
答案 1 :(得分:1)
必须在编译时知道结构大小。
如果它包含一个指向动态分配内存的指针,那么该内存不是结构的一部分 - 它在结构外部而指针指向它 - 所以它不会影响sizeof
结构
如果您正在谈论灵活的阵列成员,那么您需要实现自己的方式来了解分配的内存量,例如:有一个包含大小的struct成员变量。
答案 2 :(得分:1)
sizeof
的结果是编译时常量,因为变量或结构的大小在运行时不会改变。
唯一的例外是V(ariable)L(ength)数组,代码为它们排除"知道"大小。
参照:
我们可以在结构中动态分配数组
所以我们假设:
struct s
{
size_t size;
int * ints;
}
尺寸为sizeof(struct s)
。这是
sizeof(size_t)
int
的指针的大小:sizeof (int *)
这取决于结构成员int * ints
可能指向的字节数。