怎么在eclipse下给main函数传递参数

2021-01-11 19:09:14 字数 5370 阅读 8087

1楼:育知同创教育

工具:eclipse

方法如下:

选中项目主类右键在run as里选中 run configuration

选择第2个选项卡 (x)=arguments例如命令行使用是: java -jar gamut.jar -g battleofthe***es

怎么在eclipse下给main函数传递参数

2楼:育知同创教育

方法如下:

选中项目主类右键在run as里选中 run configuration

选择第2个选项卡 (x)=arguments假如命令行使用是: java -jar gamut.jar -g battleofthe***es

python 如何给 c 函数传递结构体参数

3楼:腾讯电脑管家

//test1.c#include#includestructstudent

;voiddisplay(structstudentsu)

python怎么向类中的函数传递参数

4楼:逆风笑

我再补充一下:直接写个例子,看注释就能明白class person:

#有时写作person(object):

#表示继承object中的一些方法(如__init__等)#在python3中没区别,已经默认继承了def __init__(self, init_name):

self.name = init_namedef greet(self):

print('hi, my name is %s' %self.name)

p1 = person('david')

#这个david传参比较特殊,因为是传给init初始化方法,所以可以直接写在类后面

#一般我们需要给类中定义的方法或属性赋值的时候,用的是.访问,而不在创建类对象时传参

p1.greet()

5楼:育知同创教育

python中函数参数的传递是通过“赋值”来传递的。但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题”,也就说没有回答怎么赋值的问题。函数参数的使用可以分为两个方面,一是函数参数如何定义,二是函数在调用时的参数如何解析的。

而后者又是由前者决定的。函数参数的定义有四种形式:

1. f(arg1,arg2,...)

2. f(arg2=,arg3=...)

3. f(*arg1)

4. f(**arg1)

第1 种方式是最“传统”的方式:一个函数可以定义不限个数参数,参数(形式参数)放在跟在函数名后面的小括号中,各个参数之间以逗号隔开。用这种方式定义的函数在调用的时候也必须在函数名后的小括号中提供相等个数的值(实际参数),不能多也不能少,而且顺序还必须相同。

也就是说形参和实参的个数必须一致,而且想给形参1的值必须是实参中的第一位,形参与实参之间是一一对应的关系,即“形参1=实参1 形参2=实参2...”。很明显这是一种非常不灵活的形式。

比如:"def addon(x,y): return x + y",这里定义的函数addon,可以用addon(1,2)的形式调用,意味着形参x将取值1,主将取值2。

addon(1,2,3)和addon (1)都是错误的形式。

第2种方式比第1种方式,在定义的时候已经给各个形参定义了默认值。因此,在调用这种函数时,如果没有给对应的形式参数传递实参,那么这个形参就将使用默认值。比如:

“def addon(x=3,y=5): return x + y”,那么addon(6,5)的调用形式表示形参x取值6,y取值5。此外,addon(7)这个形式也是可以的,表示形参x取值7,y取默认值5。

这时候会出现一个问题,如果想让x取默认值,用实参给y赋值怎么办?前面两种调用形式明显就不行了,这时就要用到python中函数调用方法的另一大绝招 ──关健字赋值法。可以用addon(y=6),这时表示x取默认值3,而y取值6。

这种方式通过指定形式参数可以实现可以对形式参数进行“精确攻击”,一个副带的功能是可以不必遵守形式参数的前后顺序,比如:addon(y=4,x=6),这也是可以的。这种通过形式参数进行定点赋值的方式对于用第1种方式定义的函数也是适用的。

上面两种方式定义的形式参数的个数都是固定的,比如定义函数的时候如果定义了5个形参,那么在调用的时候最多也只能给它传递5个实参。但是在实际编程中并不能总是确定一个函数会有多少个参数。第3种方式就是用来应对这种情况的。

它以一个*加上形参名的方式表示,这个函数实际参数是不一定的,可以是零个,也可以是n个。不管是多少个,在函数内部都被存放在以形参名为标识符的tuple中。比如:

对这个函数的调用addon() addon(2) addon(3,4,5,6)等等都是可以的。

与第3种方式类似,形参名前面加了两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中。这时候调用函数必须采用key1=value1、key2=value2...的形式。

比如:1. def addon(**arg):

2. sum = 0

3. if len(arg) == 0: return 0

4. else:

5. for x in arg.itervalues():

6. sum += x

7. return sum

那么对这个函数的调用可以用addon()或诸如addon(x=4,y=5,k=6)等的方式调用。

上面说了四种函数形式定义的方式以及他们的调用方式,是分开说的,其实这四种方式可以组合在一起形成复杂多样的形参定义形式。在定义或调用这种函数时,要遵循以下规则:

1. arg=必须在arg后

2. *arg必须在arg=后

3. **arg必须在*arg后

在函数调用过程中,形参赋值的过程是这样的:

首先按顺序把“arg”这种形式的实参给对应的形参

第二,把“arg=”这种形式的实参赋值给形式

第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参

第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参。

例子:1. def test(x,y=5,*a,**b):

2. print x,y,a,b

就这么一个简单函数,来看看下面对这个函数调用会产生什么结果:

test(1) ===> 1 5 () {}

test(1,2) ===> 1 2 () {}

test(1,2,3) ===> 1 2 (3,) {}

test(1,2,3,4) ===> 1 2 (3,4)

test(x=1) ===> 1 5 () {}

test(x=1,y=1) ===> 1 1 () {}

test(x=1,y=1,a=1) ===> 1 1 ()

test(x=1,y=1,a=1,b=1) ===> 1 1 ()

test(1,y=1) ===> 1 1 () {}

test(1,2,y=1) ===> 出错,说y给赋了多个值

test(1,2,3,4,a=1) ===> 1 2 (3,4)

test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4)

6楼:匿名用户

classa:

defa(self,d):

print(d)

d=a=a()

a.a(d)

如何使用定时器settimeout,setinterval执行能传递参数的函数

7楼:好程序员

例如对于函数hello(_name),它用于针对用户名显示欢

迎信息:

var username="jack";

//根据用户名显示欢迎信息

function hello(_name)

这时,如果企图使用以下语句来使hello函数延迟3秒执行是不可行的:

window.settimeout(hello(username),3000);

这将使hello函数立即执行,并将返回值作为调用句柄传递给settimeout函数,其结果并不是程序需要的。而使用字符串形式可以达到想要的结果:

window.settimeout("hello(username)",3000);这是方法(一)

这里的字符串是一段javascript**,其中的username表示的是变量,而且经测试,这个变量要是个全局的,如果是在某函数里面如此调用 settimeout,而此变量只是个函数内部变量的话,是会报变量不存在的。但这种写法不够直观,而且有些场合必须使用函数名,于是有人想到了如下

方法(二):

java中main函数的参数args[ ]怎么使用?

8楼:匿名用户

这个是运行程序前给它的参数。如果你在你程序要用这个参数的话就需要在运行前指定。比如java helloworld ceshi那么在helloworld的main方法里面 args就是多个的话用空格隔开

比如java helloworld ceshi ceshi1 ceshi2

那么那么在helloworld的main方法里面 args就是也就是说你假如你的程序是这样的

public class helloworld}然后你编译运行的时候这样运行java helloworld hello那么这个程序就会输出hello之所以是stirng 是因为我们只能以字符串的形式输入名字的话随便取只要符合java规定就行

9楼:匿名用户

如果你使用的是myeclipse,那么这个参数是我们用户自己使用键盘键入的,譬如你要输入一个整数:int a=integer.parseinterger(args[0]);这代表你输入的第一个值。

依次,如果要输入第二个那就把args[ ]中的参数+1 因为取入的是字符串,所以对应的转换一下就行

10楼:匿名用户

假设有test.class你在cmd下执行java test args1 args2 。。。这样,args1为args[0],args2为args[1]。

如何使通达信向dll函数传递多个参数

11楼:酒后吐真言时代

不是特别清楚你的用法,如果你是为了在窗口里面显示东西又不想传窗口句柄的话:

**函数 ,dll初始化的时候把函数指针给他。

然后dll直接调用该函数,在该函数里面完成对窗口的操作。

这样取窗口句柄就在你的工程里面。

12楼:

可以简单序列化你的参数,将两个序列组合成一个序列然后用一个序列传送,不过dll里要对应复原,而且由于是浮点数,有可能会损失精度。

如何判别可变参数函数的参数类型,怎么将可变参数的函数的参数传递给另一个可变参数的函数

1楼 用narginnargin number of function arguments,即函数输入参数个数。只要你的函数重载逻辑没有出错,那么就可以通过查看nargin的数值来实现你说的设置缺省值等功能。 看下nargin的帮助就知道了。 2楼 新生儿 等闲识得东风面 万紫千红总是春 怎么将可变...

js function参数怎么传递

1楼 匿名用户 比如定 2楼 淡忘曾经的虚伪 function fun ame 参数 javascript function三个参数怎么传 3楼 匿名用户 很多种传法 bai 方法一du function a a b c a 1 2 3 方法二 function c c 1 2 3 方法三 func...

c语言函数传参数加在前是什么意思

1楼 幻形术 c语言不能在函数参数前加 ,能加 的是c 语言。 在c 语言里,类型后加 表示引用,如 int a int b a 表示b引用a,b实际上就是a的别名。修改b的值也会导致a的值被修改。 函数传参时,加 表示把实参直接传递给函数,而不加 表示是传拷贝。 传引用 将实参直接传给形参,对于复...