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