小编Luc*_*cky的帖子

为什么这个循环中的变量指向同一个内存位置?

考虑下面的 C 代码。我原以为变量bar每次都会被实例化,因此会指向内存中的不同地址,但事实并非如此。

for (i = 2; i < 7; i++) {
    struct foo bar;
    printf("struct %u\n", bar);
}
Run Code Online (Sandbox Code Playgroud)

输出:

struct 13205520
struct 13205520
struct 13205520
struct 13205520
struct 13205520
Run Code Online (Sandbox Code Playgroud)

如果不明显,我想要的是在 5 个不同的位置生成 5 个不同struct的 s——嗯,实际上是 5 个不同的指向structs 的指针。我怎样才能做到这一点?

c pointers

11
推荐指数
3
解决办法
237
查看次数

用惯用的 Perl 模拟 PHP 的 array_keys 函数

在 PHP 中,有一个函数array_keys,当给定一个可选值时,它将返回与提供的值匹配的数组的所有索引。所以给出这个 PHP 代码:

$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
Run Code Online (Sandbox Code Playgroud)

它会输出这个:

Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Run Code Online (Sandbox Code Playgroud)

除了下面的代码之外,还有更多的 Perlish 方式来完成相同的功能吗?我似乎为此想起了一个mapgrep技巧。

my @a = ("blue", "red", "green", "blue", "blue");

for ($i = 0; $i <= $#a; $i++) {
  push(@b, $i) if ( $a[$i] eq "blue");
}

print join(',', @b)
Run Code Online (Sandbox Code Playgroud)

php arrays perl

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

标签 统计

arrays ×1

c ×1

perl ×1

php ×1

pointers ×1