小编Dar*_*uez的帖子

返回数组的不可能性在C中实际意味着什么?

我并不想复制关于C不能返回数组的常见问题,而是要深入研究它.

我们不能这样做:

char f(void)[8] {
    char ret;
    // ...fill...
    return ret;
}

int main(int argc, char ** argv) {
    char obj_a[10];
    obj_a = f();
}
Run Code Online (Sandbox Code Playgroud)

但我们可以这样做:

struct s { char arr[10]; };

struct s f(void) {
    struct s ret;
    // ...fill...
    return ret;
}

int main(int argc, char ** argv) {
    struct s obj_a;
    obj_a = f();
}
Run Code Online (Sandbox Code Playgroud)

所以,我正在浏览由gcc -S生成的ASM代码,并且似乎正在使用堆栈,-x(%rbp)与任何其他C函数返回一样进行寻址.

直接返回数组有什么用?我的意思是,不是在优化或计算复杂性方面,而是在没有结构层的情况下这样做的实际能力方面.

额外数据:我在x64 Intel上使用Linux和gcc.

c

71
推荐指数
3
解决办法
6460
查看次数

perl如何解决哈希中可能的哈希冲突?

我们知道,perl将其'hash'类型实现为具有计算索引的表,其中这些索引是截断的哈希值.

我们也知道,散列函数可以(并且将通过概率)发生冲突,为2个或更多不同的输入提供相同的散列.

然后:当perl解释器发现密钥生成与另一个密钥相同的散列时,它如何处理?它完全处理它吗?

注意:这不是关于散列算法,而是关于散列表实现中的冲突解决方案.

perl hashmap

1
推荐指数
1
解决办法
304
查看次数

标签 统计

c ×1

hashmap ×1

perl ×1