gpt4 book ai didi

c - 结构的大小 - c 中的 size_t

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:41 24 4
gpt4 key购买 nike

出于某种原因,当我尝试获取结构的大小时,我总是遇到段错误。

struct my_struct {
char *a;
int b;
};

int main(int argc, char *argv[])
{
struct my_struct dastruct;
size_t len = sizeof(dastruct) / sizeof(struct my_struct); // error
qsort(dastruct, len, sizeof(struct my_struct), cmp);
...
}

知道我做错了什么吗?谢谢

最佳答案

如果您是在

size_t len = sizeof(dastruct) / sizeof(struct my_struct); 

行,它可能是由 sizeof(struct my_struct) 评估为 0 引起的。(即问题实际上是被零除)。当 struct my_struct 类型不完整时,某些编译器可能会发生这种情况,即未定义。在 sizeof 中使用不完整的类型在 C 中是非法的,但某些编译器出于某种原因允许它,将其计算为 0。(尽管我希望编译器在编译时捕获此除以 0。)

你的代码明显是假的,没有说明问题。如果上述理论是正确的,很可能在您的实际代码中,您在 sizeof 中输入了错误的类型 struct my_struct 的名称,或者忘记包含类型的定义 >struct my_struct.

(极不可能,但无论如何......)

关于c - 结构的大小 - c 中的 size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411798/

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