c语言函数参数

Python023

c语言函数参数,第1张

C语言中参数分为实际参数(实参)与形式参数(形参)。

实际参数是在调用时传递个该函数的参数。

形式参数是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数。

实际参数是在调用时传递个该函数的参数.

举一个很简单的例子:

#include<stdio.h>

int f(int b) // b为形参

{

return b

}

void main()

{

int a=1

printf("%d",f(a))// a为实参

}

参数就是用来代替一个数的未知数

比如你定义时间,用t做参数

当你要计算路程vt(其中v设为常量),当要算一段时间的路程,只要用这个公式,再带入一个t的值就可以了。

总之,参数就是一个符号,没有实际意义,要让他有实际意义,就给参数附一个值就可以了

形参就是没有实际意义的参数

比如上面的t

实参就是有实际意义的参数

比如把上面的t赋值的那个常量

汇编代码gcc:

第一个问题的汇编:

movl $0, %ebx

incl %ebx

incl %ebx

incl %ebx

movl %ebx, 8(%esp)

movl %ebx, 4(%esp)

movl %ebx, (%esp)

call _func

汇编显示,先将n自增了3次变为3,然后调用函数,因此都是3

第二个问题的汇编:

movl $3, 16(%esp)

movl $98, 12(%esp)

movl $2, 8(%esp)

movl $97, 4(%esp)

movl $1, (%esp)

call _func2

可以看出参数对应的栈地址应该是连续的

另外,这个程序在VC6下的结果完全不一样:

func for n++

       0          0          0

  12ff2c     12ff30     12ff34

func for ++n

       3          2          1

  12ff2c     12ff30     12ff34

func2

  12ff24     12ff28     12ff2c     12ff30     12ff34

但是最后的地址也是连续的。

此类问题知道上问过多次了,可以说没有什么意义,结果与编译器实现相关,实际编程没有用处,除非写代码的人喜欢玩花俏