我有一段这样的代码:
struct mystruct *v;
size_t sz;
sz = sizeof(*v);
预计sz
会是什么?
与sizeof(struct mystruct)
有什么区别?
在堆栈中使用sz
(而不是#define
)有什么意义?
答案 0 :(得分:4)
sizeof
是编译时运算符,编译器将其替换为相关数字。所以在运行时会有一个数字 - 没有指针。
sizeof(*t)
为您提供T
的大小t
为T*
。
所以让我们假设
char* c;
sizeof(c)
将给出指针的大小,而sizeof(*c)
将给出字符的大小,即1个字节。
答案 1 :(得分:1)
预计sz是什么样的,因为v是未初始化的?
sizeof
运算符不必对操作数保持的值做任何事情。对它来说重要的是类型。
此处sizeof(*v)
会给出它指向的struct mystruct
的大小。
答案 2 :(得分:1)
预计会是什么样的?
结构类型的大小(以字节为单位),包括任何填充字节。
sizeof(struct mystruct)有什么区别?
没有,它只是不同的编码风格。
将sz放入堆栈有什么意义?
据说该程序将使用该值进一步降低..?你告诉我们。