c语言函数参数传递的是值还是拷贝

如题所述

return是用来做函数返回值的(也就是说函数也是有其类型的),比如函数定义为int类型,则return返回的也是int型(不管你return后面跟的是什么类型,都要被强制转换为int型)。形参传递都是对实参值的拷贝,指针变量传递过去的是地址(也是拷贝哦,只不过是地址),然后在函数中通过地址直接操作地址中所保存的变量的值(相当于直接操作变量)来达到更改实参指针所指向的变量的值(有点拗,不懂可以联系我,慢慢讲解一下,指针是非常重要的哦)。接下来讲解一下int
*p(int
*pA);
首先你定义的是一个指针函数(即该函数返回值是一个指针,并且是一个指向int类型的指针,也可以研究一下函数指针的作用哦),然后该函数的参数也是一个指向Int类型的指针变量。调用该函数时,传递给pA的是指针(指针的意思就是地址,指针变量是用来存放该地址的变量),也是实参指针变量的值的拷贝(明白了吧?^_^);接下来是返回值,从定义只能看出,其返回值为指向int类型的指针,而这个指针指向什么地址,就要看你的具体return返回值语句了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-01
int
*p(int
*pA)主函数调用,传递给形参pA的实参是一个指针,就相当于实参指针指向一个值,pA指针也指向那个值,这是赋值,不能说是拷贝,
比如
int
*k;
k=p(pA);///pA是自己定义的一个指针
///p函数返回时,是函数内部自己定义的指针,赋给k时,就是对指针进行赋值,不能说是返回指针拷贝,他们指向的值一样,但是意义不一样
第2个回答  2020-03-28
不是滴,函数参数值是从右到左的,我举一个例子给你看看!
#include<stdio.h>
int
main()
{
void
fun(int
i,int
n);

int
i=0;

fun(i++,i++);

return
0;
}

void
fun(int
i,int
n){

printf("%d\t%d\n",i,n);

}
第3个回答  2020-05-07
C语言中函数参数的传递有两种方式:传值与传地址。
传值就是将实参的值传递给形参,使得形参的值与实参一样。
传地址就是将实参所在内存单元的地址传递给形参,使得形参指向实参所在的内存地址。
举例说明如下:
#include<stdio.h>
int fun1(int a, int b);
{
return a>b ? a : b;
}
int fun2(int *a, int *b);
{
return *a>*b ? *a : *b;
}
void main()
{
int x=5, y=3;
int z1 = fun1(x, y); // 传值调用方式
int z2 = fun2(&x, &y); // 传地址调用方式
}
相似回答
大家正在搜