为 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.
我刚刚查看了一些 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.