c语言调用函数形参是指针 c语言调用有参函数

C语言问题 函数中形参若为指针,则调用时对应位置上的实参不能是()

不能是

在河口等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站制作 网站设计制作按需制作,公司网站建设,企业网站建设,品牌网站制作,营销型网站建设,外贸网站建设,河口网站建设费用合理。

简单变量,因为

它不是地址。

语法规则而已。

形参若为指针,实参必须是

指针变量,或

数组名,或

简单变量的地址。

数组名

就是数组的首地址,是地址

简单变量的地址

是地址

形参若为指针,实参是

指针变量,这是一一对应,天经地义。

C语言中,函数形参为指针,调用时的实参为立即数,应该怎么转化类型?

立即数不能转换成指针,因为它不在内存中。(int*)2表示从地址0x02开始的int型的地址空间。如果你的函数形参是指针而实参却需要传递立即数,说明这个函数编的是有问题的。

如果你一定要传递,可以用一个中间变量存放立即数,然后传递该变量的地址。

C语言函数里的参数是指针的问题

函数定义和函数调用是两个概念,函数定义 为f(int *arr),表示参数是一个整型指针,因此使用该函数时要传递一个地址,如变量int a=0; 调用函数f传递a的地址时需要写为f(a);而对于数组来说,如int b[]=[1,2,3], b本身就是数组首元素的地址,因此调用函数f传递数组首地址需要写为f(b)。

c语言函数的形参为指针变量时,对应的实参可以是数组名。怎么理解呀

举例:

void f(int *p)

{

}

int arr[]={1,2,3};

因为函数f的形参是一个类型为int的指针变量,所以调用f时,可以将数组名arr作为实参传给形参p。即可以这样调用:f(arr);

C语言:从调用函数来看,函数传递的是数组,所以函数的形参应为指针,为什么是这样的?谢谢

函数传递的是数组的首地址,即a[0]的地址,而不是把整个地址都传过去,因为有首地址,只要往下寻找就能遍历整个数组了。而指针就可以指向数组首地址~

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

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

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语言调用函数形参是指针 c语言调用有参函数
当前URL:http://ybzwz.com/article/hgesio.html