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://myzitong.com/article/ddpcggo.html