资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言不同函数的参数 c语言函数参数个数有限制吗

c语言中函数形参与实参的区别与联系

形参与实参在本质上是两个不同的东西。

目前累计服务客户1000+,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都做网站、网站建设、外贸营销网站建设、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。成都创新互联公司始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

比如函数f(x)=y=x²+2x,x就是函数的参数,我们用c语言把它写出来就是:

float

f(float

x)

{

float

y;

y=x*x+2*x;

return

y;

}

你看看与f(x)=y=x²+2x何其相似!

当我们要计算f(2)的函数值时,就让x=2,得到y=8,即f(2)=8。

在c语言这里,我们就把x叫“形参”,把2叫“实参”,可以看出它们是多么不同了吧!

如果有一个变量a=1,也可以计算f(a)=2,其实在计算时,把a的值赋给了x。a是实参,x仍然是形参。计算前后a的值并没有变化。

如程序中调用:c=f(a)+f(2),结果得到c=10。

值得注意的是,往往实参与形参使用同一个字母,比如都用x,但是这两个x是不同的变量,实参x把值赋给形参x后,就没有实参的什么事了,在函数中形参x值的变化也不会影响实参x的值。

说起它们的相同之处,就是它们的变量类型是一样的;说起它们的联系,就是有一次实参对形参的赋值;说起它们的区别,则是两个不同的变量。

啰嗦很多,不知是否说清,若有不明之处,请留言。

c语言函数参数

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

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

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

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

举一个很简单的例子:

#includestdio.h

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

{

return b;

}

void main()

{

int a=1;

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

}

c语言中,同一程序里,不同函数的形参可否一样

同一程序里,不同函数的形参可以一用。只是同一函数的形参不能相同(C语言里是这样的),如void fun(int a,int b),void funb(int a,int b);这样定义都是可以的。;但是在C++里面,有函数的重载,相同的函数名都可以有相同的形参。如 int func(int a,int b), int func(int a,int b,int c);

C语言函数参数

汇编代码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

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

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


当前文章:c语言不同函数的参数 c语言函数参数个数有限制吗
URL地址:http://cdkjz.cn/article/ddcsccj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220