C语言 带参数函数的引用调用

Python010

C语言 带参数函数的引用调用,第1张

#include <stdio.h>

void fun(int * a,int k)

void main()

{

int a[10]

printf("请输入10个整数:\n")

for(int i=0i<10i++)

{

scanf("%d",&a[i])

}

fun(a,sizeof(a)/sizeof(a[0]))

}

void fun(int a[],int k)//这就是你想要的函数

{

int g0=0,t0=0,e0=0/*g0就是>0,t0就是小于0,e0就等0*/

for(int i=0i<ki++)

{

if(a[i]>0) g0++

if(a[i]==0) e0++

if(a[i]<0) t0++

}

printf("大于0的个数为:%d\n",g0)

printf("小于0的个数为:%d\n",t0)

printf("等于0的个数为:%d\n",e0)

}

/*

说明就和ichenq的差不多,只是ichenq的那个有问题,比如他的if语句里多了几个""号,导致无没通过,另外我用他的函数来测试得不到想要的结果

sizeof(a)/sizeof(a[0])就是数组a的长度*/

形参与实参:

int a(int x){//这个x就是形参,就是你定义的变量名称

......

}

int main(){

int y=5;

a(y)//具体的变量y就是实参

a(z)//z也是实参,就是实实在在的值

}

传值调用和引用调用:

二者的区别为,当传引用时,实际传到函数中的形参,是实际参数的一个引用,而不是仅传递值到函数中。具体的表现有以下几条:

1、传引用时,形参和实参是同一个变量,即使用相同的内存空间,二者有相同的地址。而传值时二者地址不同;

2、传引用时,由于没有新建变量,所以对于类对象参数,不会产生构造和析构。而如果是传值调用,调用时会进行构造,退出函数时会进行析构;

3、由于传引用使用的是原本实参的地址,所以对引用参数值的修改,会在退出函数后体现在主调函数中,而传值调用对参数的修改不会影响到主调函数。