重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
输出:
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于做网站、成都做网站、潢川网络推广、成都小程序开发、潢川网络营销、潢川企业策划、潢川品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供潢川建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
调用函数前输出结果:
nums[1]=0
nums[2]=0
nums[3]=0
nums[4]=0
value = 0
因为循环变量初值是1,所以nums[0]不会输出
findMax(nums,value); //调用findMax,vals指向nums开始元素,m=0
i=1;[i=1],iMAXELS成立,开始循环,vals[i]=1,nums[0,1,0,0,0],输出:vals[1]=1
i++;[i=2],iMAXELS成立,继续循环,vals[i]=1,nums[0,1,1,0,0],输出:vals[2]=1
i++;[i=3],i5成立,继续循环,vals[i]=1,nums[0,1,1,1,0],输出:vals[3]=1
i++;[i=4],i5成立,继续循环,vals[i]=1,nums[0,1,1,1,1],输出:vals[4]=1
i++;[i=5],i5不成立,结束循环,输出:m=1
函数返回,m被舍弃,输出:
调用函数后输出结果:
nums[1]=1
nums[2]=1
nums[3]=1
nums[4]=1
value = 0
由于子程序中没有计算过m,所以m值一直是初始的1,这个m是函数自己临时定义的变量,用来接收调用者传进来的参数,main函数将vale的值0传递给m,计算完后,函数返回,m被舍弃,不会影响value的值(作为参数,是取value的值来用一下,然后就没有value的事了)
如果想将m的值返回,那么有两种办法:
函数写成:void findMax(int vals[],int *m),然后函数中用到m的地方都改成*m,调用时findMax(nums,value);
函数写成:int findMax(int vals[],int m),函数最后写return m;调用时value=findMax(nums,value);
如果子程序不需要value作为m的初始值,则可省略第2个参数:int findMax(int vals[]),调用:value=findMax(nums);
当传递的数,不止一个的时候,或者要改变参数值得时候返回实参的值得时候。就用传递地址。
例如:
getct(int
*a,int
*b)
{
printf("%d
%d",*a,*b);
}
mian()
{
int
x=5,y=3;
int
*s,*z;
s=x;z=y;
getct(s,z);
}
指针就是地址,那也就是指针变量作为函数参数的传递喽 。
例:对输人的两个整数按大小输出。
#includestdio.h
void main()
{
void swap(int *p1,int *p2);
int a,b.
int *pointer1,*pointer2;
scanf("%d,%d",a,b);
pointer1=a; pointer2=b;
if(ab)
swap(pointer1,pointer2);
printf("\n%d,%d\n",a,b);
}
void swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
int add(struct stu g)
标准c是不支持这种传引用的语法的。。想做到类似效果只能函数里用 *g,调用时候用 value 之类的
k=stu.i+stu.j; 这里stu应该是g