标签: variable-declaration

变量声明导致分段错误

我不明白程序中出现分段错误的原因.代码可在此处获得

在第29行,我声明了一个PclImage变量,使用typedef定义,类似于struct数组.PclImage类型的定义如下(来自src/libMyKinect.h文件):

typedef struct {
    int valid;
    float x;
    float y;
    float z;
    unsigned char blue;
    unsigned char green;
    unsigned char red;
} Point3d;

typedef Point3d PclImage[480][640];
Run Code Online (Sandbox Code Playgroud)

该程序运行良好,但当我声明一秒钟时PclImage,我一启动程序就会出现分段错误.

例如,如果在第一个文件的第30行,我添加PclImage bgPcl;程序立即崩溃.

谁能帮我?

c typedef segmentation-fault variable-declaration

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

如何在Swift中正确声明变量?

我发现在Swift中声明变量的这些不同方法非常有趣:

// METHOD 1
var dogName: String = "Charlie"

// METHOD 2
var dogName: String {
    return "Charlie"
}

// METHOD 3
let dogName = {
    return "Charlie"
}

// METHOD 4
var dogName: String = {
    return "Charlie"
}()
Run Code Online (Sandbox Code Playgroud)

显然方法3声明了一个让我们知道差异; 但为什么Swift允许方法4?

这四种方法有什么区别?

我在方法2和方法4之间特别混淆.另外,为什么方法3与方法4相比失去了最后的括号?

var let variable-declaration swift swift3

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

"我们的"或"使用变量"中的什么魔法满足"使用严格的qw(vars)"?

我有工作代码,但我试图理解为什么它的工作原理.我也想更多地了解Perl 5中(的内部perlbrew,perl-5.26.1,Cygwin x64).

我知道从perlvarstrictuse strict 'vars'作品由设置标志$^H.然后Perl ::根据这些标志测试对非变量的访问.不知怎的,既ouruse vars标记变量,使他们通过测试.他们是怎么做到的?

例如:

perl -E 'package Foo;
    use strict "vars";
    use vars qw($foo);
    say $foo;'
Run Code Online (Sandbox Code Playgroud)

运行正常(虽然它不产生输出).根据来源use vars,我尝试了这个,我认为会有同样的效果:

perl -E 'package Foo;
    use strict "vars";
    my $sym = "Foo::foo";          # <-- These two lines pulled straight
    *$sym = \$$sym;                # <-- from the source for the vars pragma
    say $foo;'
Run Code Online (Sandbox Code Playgroud)

但是,它给了我一个错误: …

perl packages scoping variable-declaration language-lawyer

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

11
推荐指数
2
解决办法
305
查看次数

'auto'关键字可以用作C++ 11中的存储类说明符吗?

可在auto关键字被用作在C++ 11中的存储类说明?

以下代码在C++ 11中是否合法?

int main() {
   auto int x;
}
Run Code Online (Sandbox Code Playgroud)

c++ variable-declaration storage-class-specifier c++11

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

在for循环中声明的变量是否会影响循环的性能?

我已经完成了我的作业,并且一再保证,无论是在for循环内部还是外部声明变量,它在性能上都没有区别,它实际上编译为完全相同的MSIL.但是我一直在弄乱它,并发现在循环中移动变量声明确实会导致相当大的一致性能增益.

我编写了一个小型控制台测试类来测量这种效果.我初始化一个静态double[]数组项,两个方法对它执行循环操作,将结果写入静态double[]数组缓冲区.最初,我的方法是那些我注意到差异的方法,即复数的大小计算.对于长度为1000000 的项目数组运行这些100次,我得到的变量(6个double变量)在循环内的运行时间一直较低:例如,32,83±0,64 ms v 43,44±使用Intel Core 2 Duo @ 2.66 GHz的老式配置为0.45 ms.我尝试以不同的顺序执行它们,但它没有影响结果.

然后我意识到计算复数的大小远非最小的工作示例,并测试了两个更简单的方法:

    static void Square1()
    {
        double x;

        for (int i = 0; i < buffer.Length; i++) {
            x = items[i];
            buffer[i] = x * x;
        }
    }


    static void Square2()
    {
        for (int i = 0; i < buffer.Length; i++) {
            double x;
            x = items[i];
            buffer[i] = x * x;
        }
    }
Run Code Online (Sandbox Code Playgroud)

有了这些,结果就出现了另一种方式:在循环外声明变量似乎更有利:对于Square1() …

c# for-loop variable-declaration

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

if语句中的php static

我的配置文件中有这样的结构:

<?php
if (true) {
    $nonstatic = 1;
    static $config = 1;
}
else {
    $nonstatic = 2;
    static $config = 2;
}

echo $nonstatic;
echo $config;
?>
Run Code Online (Sandbox Code Playgroud)

那么为什么$ config包含2如果该部分语句为false且$ nonstatic包含1?这是一个错误吗?

php static if-statement variable-declaration

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

声明与初始化变量?

我很想知道声明变量和初始化变量之间的区别.例如

var example; // this is declaring

var example = "hi" // initializing? Or just "adding a value"?
Run Code Online (Sandbox Code Playgroud)

我不认为我就在那里,但每个人的定义究竟是什么?或者他们基本上是同一个意思?

javascript variable-initialization variable-declaration

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

在 JavaScript 中使用 var 而不是 let 的一些原因是什么?

使用letjavascript ES6 中变量声明的 new 关键字,我再也想不出使用var. 到目前为止,我一直在这样做,我没有看到使用letALL THE TIME 的任何缺点。

var今天使用的好理由是什么?let今天一直使用是一个好习惯吗?

javascript variable-declaration node.js

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

变量的声明和赋值:静默删除赋值

您可以声明变量列表并在Perl 6中为它们分配一些值

my ($a, $b) = 33,44 # $a will be 33 and $b 44
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试在变量声明后分配值,则将以静默方式删除值

my ($a = 44, $b = 33); 
say $a, $b; #OUTPUT: «(Any)(Any)?» 
Run Code Online (Sandbox Code Playgroud)

从那以后它就变得更加怪异了

 my ($a = 44, $b);
Run Code Online (Sandbox Code Playgroud)

失败了:

===SORRY!=== Error while compiling /tmp/G7JgLMe1Wq
Cannot put required parameter $b after optional parameters
Run Code Online (Sandbox Code Playgroud)

my ($a, $b = 33);
Run Code Online (Sandbox Code Playgroud)

将与将它们中的任何一个分配在一起具有相同的结果.

这种行为让我感到困惑.它应该发出警告吗?第一个表达式是否也会产生与可选参数相同的错误?我们应该将其记录为陷阱吗?上述所有的?

variable-assignment perl6 variable-declaration raku

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