为 size_t n 采用赋值运算符的 calloc 有什么作用?

What does calloc that takes an assignment operator for size_t n do?

我刚刚查看了一些 leetcode 提交并遇到了 2sum soution 的作业:

int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int* res = calloc((*returnSize = 2), sizeof(int));
    ...
}

这是不是在说“res 是一个指向存储 2 个初始化为 0 的 int 类型的整数内存块的指针”?所以相当于:

int* res = calloc(2, sizeof(int));

还是其他原因?

它并不是“为 size_t 使用赋值运算符”。相反,它获取 size_t.

的赋值操作的结果

例如

(a = 2)

将值 2 放入 returns 分配的值中。所以你也可以这样做:

int a, b;
b = (a = 2);

这里,b会得到运算结果(a = 2),即2。

这就是你的情况。传递给 calloc 的第一个参数是赋值 (*returnSize = 2) 的结果,即 2.