C sizeof运算符和结构

C sizeof运算符和结构,c,sizeof,C,Sizeof,比如说,我们有一个上面定义的结构(或者一般的任何结构,我只是为了举例而写了上面的结构) 那么,使用sizeof运算符有什么更好的方法呢 sizeof(结构s)或sizeof(*obj) 我更喜欢第一个,因为它对我更有意义(清楚地告诉我们我们正在为struct s的对象分配内存) 此外,使用第二个会引入逻辑错误(如通常的“忘记取消引用指针”) 第一个会引起什么问题吗? 我还没有遇到任何问题,只是想知道我所做的是否正确 如果是这样的话,你能提供一个失败的例子吗 那么,使用sizeof运算符有什么更好

比如说,我们有一个上面定义的结构(或者一般的任何结构,我只是为了举例而写了上面的结构)

那么,使用sizeof运算符有什么更好的方法呢

sizeof(结构s)或sizeof(*obj)

我更喜欢第一个,因为它对我更有意义(清楚地告诉我们我们正在为struct s的对象分配内存)

此外,使用第二个会引入逻辑错误(如通常的“忘记取消引用指针”)

第一个会引起什么问题吗? 我还没有遇到任何问题,只是想知道我所做的是否正确

如果是这样的话,你能提供一个失败的例子吗

那么,使用sizeof运算符有什么更好的方法呢

sizeof(结构s)或sizeof(*obj)

这是偏好的问题

我更喜欢
sizeof(*obj)
。如果我以后更改
obj
(例如,
struct s2
)的类型,
sizeof(struct s)
将过期

那么,使用sizeof运算符有什么更好的方法呢

sizeof(结构s)或sizeof(*obj)

这是偏好的问题


我更喜欢
sizeof(*obj)
。如果我以后更改
obj
(例如,
struct s2
)的类型,
sizeof(struct s)
将过时。

我更喜欢
sizeof(struct s)
,尽管结构名称更改,代码也过时了。我的理念是,如果结构发生了变化,最好是为了安全起见而修改使用它的代码。

我更喜欢
sizeof(struct s)
,尽管结构名称发生了变化,但代码已经过时。我的理念是,如果结构发生变化,为了安全起见,最好修改使用它的代码。

也可以使用


sizeof(*obj)
应始终使用,因为如果
obj
的类型发生变化,这仍然有效。使用
sizeof(struct s)
,您将有一个潜在的bug。

任何一个都可以使用


sizeof(*obj)
应始终使用,因为如果
obj
的类型发生变化,这仍然有效。使用
sizeof(struct s)
,您将有一个潜在的bug。

我更喜欢
sizeof(*obj)
,因为当与变量(而不是类型)一起使用时,括号是可选的(因为
sizeof
是一个运算符,而不是函数),我认为
sizeof*obj
看起来相当不错。我更喜欢
sizeof(*obj)
,因为,当与变量(而不是类型)一起使用时,括号是可选的(因为
sizeof
是一个运算符,而不是一个函数),我认为
sizeof*obj
看起来相当不错。-1:
sizeof(*obj)
应该总是首选。如果
obj
的类型发生变化,您将有一个带有
sizeof(struct s)
-1:
sizeof(*obj)
的静默bug应该始终是首选。如果
obj
的类型发生变化,您将有一个带有
sizeof(struct s)
的静默bug。我不知道为什么这被认为是“非建设性的”。这是一个很好的问题。我不知道为什么这被认为是“没有建设性的”。这是一个好问题。可能是重复的是的,我发现我的方法有缺陷。更改结构名称至少会抛出错误,但如果不注意,更改类型将是灾难性的。我想从现在起我会坚持使用这些物品。谢谢。是的,我发现我的方法有缺陷。更改结构名称至少会抛出错误,但如果不注意,更改类型将是灾难性的。我想从现在起我会坚持使用这些物品。非常感谢。
struct s  
{  
    int i;  
    char * c;  
} *obj;
obj = malloc(sizeof(struct s));