c语言函数参数不能传递 c函数作为参数传递

在c语言中,指针作为函数参数,形参只能传递值,而不能传递地址,是怎么回事?

C语言中,函数参数只能传值。与传值对应的是传引用,C语言不支持函数参数传引用,C++语言才支持。

我们提供的服务有:成都网站建设、成都网站制作、微信公众号开发、网站优化、网站认证、商河ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的商河网站制作公司

C++传引用函数:

void foo(int a) { a = 3; }

假如a = 2,执行foo(a)后,a = 3。

---

C语言可以模拟传引用,方法是通过指针扒前来实现:

void foo2(int* ap) { *ap = 3; }

假如a = 2,执行foo2(a)后,a = 3

foo2(a)调用本质上仍然是传值,只不过传递的是指针滑此庆,指针即是地址,地址本质上是一个无符号整数。

如果:

void foo3(int b) { b = 3; }

假如a = 2,执行foo3(a)后,a = 2。这是因为foo3(a)调用过程中,a值传给形参b,修改b的值与实参a无关。

注意到,foo3(a)与上述foo(a)传引用的调用是形式一样的。

既然C语言通过指针可以实现传引用调用,为什么C++还要引信握入引用这个特性呢?这是因为C++引入的很多新特性需借助引用来实现,比如,拷贝构造函数等等。

c语言形参的值能不能传递给实参

形参和实参拥有分别的存储空间,即便是指针传递,改变的也只可能是这个指针变量所指向的内容,而不是指针变量本身的值,也即,如有指针变量p,那对实参的变化,有可能改变的也只是*p的值,而不是p本身的值。

实参和形参在英文中,argument和parameter经常可以互换使用,但是C99标准规定了:

对于actualargument或actualparameter使用术语argument(译为实参);对于formalargument或formalparameter使用术语parameter(译为形参)。

为遵循这一规定,我们可以说形参是变量,实参是函数调用提供的值,实参被赋给相应的形参。因此,在上述示例中,times是pound()的实参,n是pound()的形参。类似地,在函数调用pound(times+4)中,表达式times+4的值是该函数的实参。

扩展资料

函数的调用

第1个函数调用是pound(times),times的值5被赋给n。因此,printf()函数打印了5个井号和1个换行符。第2个函数调用是pound(ch)。

这里,ch是char类型,被初始化为!字符,在ASCII中ch的数值是33。但是pound()函数的参数类型是int,与char不匹配。

程序开头的函数原型在这里发挥了作用。原型(prototype)即是函数的声明,描述了函数的返回值和参数。pound()函数的原型说明了两点:

-该函数没有返回值(函数名前面有void关键字);-该函数有一个int类型的参数。

51单片机c语言中断函数不能进行参数传递,是什么意思,谁能解释一下

是核镇指中断处理函数不能有输入参数也不能有函数返回。因为中断都是些硬件改戚自动调用,没有程序去给他传递参数,也没有硬件去接收参数。

不过x86计算机的软中断可以有参数传递核氏陵,不过他是用寄存器传递的。


当前名称:c语言函数参数不能传递 c函数作为参数传递
当前链接:http://hbruida.cn/article/ddpcggo.html