标签: function-parameter

为什么对函数的VLA数组参数使用星号"[*]"而不是整数?

在函数中使用变长数组作为参数时

int sum(int n, int a[n]);
Run Code Online (Sandbox Code Playgroud)

很容易理解第一个参数(n)指定第二个参数(a)的长度.但遇到另一个用于VLA的原型作为参数

int sum(int n, int a[*]);
Run Code Online (Sandbox Code Playgroud)

真的很难理解为什么*用而不是在n里面[]

c arrays function function-parameter

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

函数声明中的最大参数数

我知道函数定义中的最小参数数量为零,但函数定义中的最大参数数量是多少?我只是为了知识和好奇而问这个问题,而不是我要写一个真正的功能.

c c++ limits function-parameter function-declaration

27
推荐指数
3
解决办法
3万
查看次数

PHP:通过引用的可变长度参数列表?

是否可以创建一个PHP函数,通过引用获取所有参数的可变数量的参数?

它没有帮助我通过引用接收一个值数组的函数,也没有一个函数将其参数包含在一个对象中,因为我正在处理函数组合和参数绑定.不要考虑呼叫时间传递参考.那东西甚至不应该存在.

php parameter-passing pass-by-reference variadic-functions function-parameter

24
推荐指数
2
解决办法
4625
查看次数

将函数参数分配给`self`

我注意到我使用的一个常见模式是为同名属性分配SomeClass.__init__()参数self.例:

class SomeClass():
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c
Run Code Online (Sandbox Code Playgroud)

事实上,它必须是其他人的共同任务,以及PyDev有一个快捷方式 - 如果您将光标放在参数列表上并单击Ctrl+1您给出的选项Assign parameters to attributes将为您创建该样板代码.

是否有不同的,简短的方式来完成这项任务?

python boilerplate variable-assignment function-parameter

24
推荐指数
4
解决办法
4145
查看次数

使用const参数将参数传递给函数:它更快吗?

例如,考虑一下:

int sum(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

int sum(const int a, const int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

第二种方法通常更快吗?

C中的函数参数被复制并发送到函数,因此函数内部的更改不会影响原始值.我的理由是,在sum上面的第二个中,编译器确实知道a并且b没有在函数内部进行修改,所以它只能传递原始值而不先复制它们.这就是为什么我认为第二个sum比第一个更快.但我真的不知道.在sum上面特别简单的例子中,差异(如果有的话)应该是最小的.

编辑:这个sum例子只是为了说明我的观点.我不希望在这个特定的例子中应该有很大的差异.但我想知道在更复杂的情况下const,编译器是否可以利用函数参数中的修饰符来使函数更快.我怀疑编译器总能确定一个参数是否在一个函数内被改变(因此我的第二个问题在下面); 因此我希望当它找到一个const修饰符时,它会做出与没有const修饰符时不同的东西.

问题:一般来说,一个函数在它的参数时会const比它们不是时更快?

问题2:通常,C编译器(理论上)是否总能确定函数内是否更改了函数参数?

c const function-parameter

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

为什么在函数内部创建同名变量时不会覆盖函数参数?

var a = 'why is this not undefined?';
function checkScope(a) {
    var a;
    console.log(a);
}
checkScope(a);
Run Code Online (Sandbox Code Playgroud)

Javascript是功能范围语言,对吗?当我在与函数参数使用相同名称的函数内部声明一个新变量时,为什么新定义的变量仍然保存与参数相同的数据?

我以为它应该是未定义的?

javascript variables function-parameter

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

C#枚举作为函数参数?

你能把标准的c#enum作为参数传递吗?

例如:

enum e1
{
    //...
}

enum e2
{
    //...
}

public void test()
{
    myFunc( e1 );
    myFunc( e2 );
}

public void myFunc( Enum e )
{
    // Iterate through all the values in e
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,我希望检索任何给定枚举中的所有名称.迭代代码会是什么样的?

c# enums loops function-parameter

19
推荐指数
1
解决办法
4万
查看次数

为什么我要在函数头中声明C数组参数的大小?

任何人都可以告诉我为什么我应该在函数头中指定C数组参数的大小?例如:

void foo (int iz[6]) { iz[42] = 43; }
Run Code Online (Sandbox Code Playgroud)

附:

int is[2] = {1,2,3};
Run Code Online (Sandbox Code Playgroud)

我们得到一个有用的错误.也许它有助于评论/文档?

c arrays function-parameter

18
推荐指数
3
解决办法
1万
查看次数

使用函数参数作为局部变量

这样的事情(是的,这不涉及一些边缘情况 - 这不是重点):

int CountDigits(int num) {
    int count = 1;
    while (num >= 10) {
        count++;
        num /= 10;
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

你对此有何看法?也就是说,使用函数参数作为局部变量.
两者都放在堆栈上,性能几乎相同,我想知道这方面的最佳实践方面.
当我为这个函数添加一个额外的冗余线路时,我觉得自己像个白痴int numCopy = num,但它确实让我感到烦恼.
你怎么看?这应该避免吗?

local-variables function-parameter

17
推荐指数
3
解决办法
4043
查看次数

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