这两种大型运营商的使用有什么区别?
出发地:https://github.com/openssl/openssl/commit/680e65b94c916af259bfdc2e25f1ab6e0c7a97d6?diff=split
unsigned int *pDecoded..。
memmove(pDecoded + i + 1, pDecoded + i, (written_out - i) * sizeof *pDecoded);
memmove(pDecoded + i + 1, pDecoded + i, (written_out - i) * sizeof (*pDecoded));我认为sizeof *PDecoded返回指向无符号int的大量指针。而sizeof (*pDecoded)则返回相当大的无符号int。
发布于 2022-11-02 00:22:40
没有区别;这些表达式是等价的。
#include <stdio.h>
int main(void)
{
unsigned int *foo;
printf("sizeof foo <%zu> | sizeof *foo <%zu> or <%zu>\n",
sizeof foo, sizeof *foo, sizeof (*foo));
}输出(在我的机器上):
sizeof foo <8> | sizeof *foo <4> or <4>这看起来是个风格选择。文件中sizeof的唯一其他用法也有多余的括号:
char a_ulabel[LABEL_BUF_SIZE + 1];
size_t a_size = sizeof(a_ulabel);只有当操作数是类型时才需要括号。
sizeof (int)否则,它们被用来影响运算符优先。
https://stackoverflow.com/questions/74283014
复制相似问题