标签: function-parameter

为什么没有参数的函数(与实际函数定义相比)编译?

我刚刚遇到某人的C代码,我很困惑为什么要编译.有两点我不明白.

首先,与实际函数定义相比,函数原型没有参数.其次,函数定义中的参数没有类型.

#include <stdio.h>

int func();

int func(param)
{
    return param;
}

int main()
{
    int bla = func(10);    
    printf("%d", bla);
}
Run Code Online (Sandbox Code Playgroud)

为什么这样做?我已经在几个编译器中测试过,它运行正常.

c parameters function-parameter function-prototypes

385
推荐指数
8
解决办法
5万
查看次数

如何动态获取函数参数名称/值?

有没有办法动态获取函数的函数参数名称?

假设我的函数看起来像这样:

function doSomething(param1, param2, .... paramN){
   // fill an array with the parameter name and value
   // some other code 
}
Run Code Online (Sandbox Code Playgroud)

现在,我如何从函数内部获取参数名称及其值的列表到数组中?

javascript reflection function-parameter

282
推荐指数
14
解决办法
16万
查看次数

Python - 使用list作为函数参数

如何使用Python列表(例如params = ['a',3.4,None])作为函数的参数,例如:

def some_func(a_char,a_float,a_something):
   # do stuff
Run Code Online (Sandbox Code Playgroud)

python list function-parameter

92
推荐指数
4
解决办法
15万
查看次数

如何创建polyvariadic haskell函数?

我需要一个函数,它接受任意数量的参数(所有相同的类型),对它们做一些事情然后给出一个结果.在我的具体情况下,参数列表是不切实际的.

当我查看haskell库时,我看到函数printf(来自模块Text.Printf)使用了类似的技巧.不幸的是,通过查看来源我无法理解这种魔力.

有人可以解释如何实现这一点,或至少一些网页/纸/任何我可以找到一个良好的描述吗?

动机:

我需要它的原因非常简单.对于学校(计算机科学课),我们需要编写一个能够"记录"数学表达式,将其表示为字符串的模块(通过为自己的数据类型编写Num/Real/etc的实例),并执行对它的各种操作.

此数据类型包含变量的特殊构造函数,可以由值或指定函数的任何值替换.其中一个目标是编写一个函数,它使用一些变量(类型对(Char,Rational))来表达这种表达式并计算表达式的结果.我们应该看看如何最好地表达函数的目标.(我的想法:该函数返回另一个函数,它接受与函数中定义的变量一样多的参数 - 似乎是不可能的).

haskell variadic-functions function-parameter polyvariadic

69
推荐指数
5
解决办法
1万
查看次数

c ++ 0x:通过引用接收lambda作为参数的正确方法

定义int->int通过引用接收lambda参数的函数的正确方法是什么?

void f(std::function< int(int) >& lambda);
Run Code Online (Sandbox Code Playgroud)

要么

void f(auto& lambda);
Run Code Online (Sandbox Code Playgroud)

我不确定最后一种形式是否是合法的语法.

还有其他方法来定义lambda参数吗?

c++ lambda function-parameter function-prototypes c++11

69
推荐指数
4
解决办法
6万
查看次数

当函数具有特定大小的数组参数时,为什么它被指针替换?

鉴于以下计划,

#include <iostream>

using namespace std;

void foo( char a[100] )
{
    cout << "foo() " << sizeof( a ) << endl;
}

int main()
{
    char bar[100] = { 0 };
    cout << "main() " << sizeof( bar ) << endl;
    foo( bar );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

main() 100
foo() 4
Run Code Online (Sandbox Code Playgroud)
  1. 为什么数组作为指向第一个元素的指针传递?
  2. 它是C的遗产吗?
  3. 标准说什么?
  4. 为什么C++的严格类型安全性下降了?

c++ arrays standards sizeof function-parameter

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

如何在MATLAB中处理函数参数的名称/值对

我有一个函数,它将可选参数作为名称/值对.

function example(varargin)
% Lots of set up stuff
vargs = varargin;
nargs = length(vargs);
names = vargs(1:2:nargs);
values = vargs(2:2:nargs);

validnames = {'foo', 'bar', 'baz'};    
for name = names
   validatestring(name{:}, validnames);
end

% Do something ...
foo = strmatch('foo', names);
disp(values(foo))
end

example('foo', 1:10, 'bar', 'qwerty')
Run Code Online (Sandbox Code Playgroud)

似乎在提取适当的值时需要付出很多努力(并且它仍然不是特别强大的再次严格指定的输入).有没有更好的方法来处理这些名称/值对?是否有MATLAB附带的辅助函数可以提供帮助?

matlab arguments function name-value function-parameter

65
推荐指数
6
解决办法
4万
查看次数

在JavaScript中跳过可选的函数参数

能否请您指出在JavaScript中跳过可选参数的好方法.

例如,我想抛弃所有opt_参数:

goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval)
Run Code Online (Sandbox Code Playgroud)

javascript function-parameter

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

*(单星)和/(斜线)作为独立参数有什么作用?

在下面的函数定义中,*/代表什么?

def func(self, param1, param2, /, param3, *, param4, param5):
     print(param1, param2, param3, param4, param5)
Run Code Online (Sandbox Code Playgroud)

注意:不要误认为 *args | 中的单|双星号 **kwargs(在这里解决

python function parameter-passing function-parameter python-3.x

47
推荐指数
2
解决办法
3551
查看次数

"volatile"关键字出现在数组下标中的目的是什么?

当我浏览cppreference时,我在函数参数中看到了一个奇怪的类型数组,如下所示:

void f(double x[volatile], const double y[volatile]);
Run Code Online (Sandbox Code Playgroud)

那么,volatile关键字出现在数组下标中的目的是什么?它有什么作用?

c arrays volatile function-parameter

43
推荐指数
2
解决办法
1722
查看次数