/*输出参数——通过形参改变实参*/
#include <stdio.h>
void fun0(int a,int b)
{
b=20;
a=10;
printf("fun0_a:%d,fun_b0:%d\n",a,b);
}
void fun1(int *a,int b)
{
b=20;
*a=10;
printf("fun1_a:%d,fun_b1:%d\n",*a,b);
}
int main()
{
int a=1;
int b=2;
printf("a=%d,b=%d\n",a,b);
fun0(a,b);
printf("a=%d,b=%d\n",a,b);
fun1(&a,b);
printf("a=%d,b=%d\n",a,b);
}
/*编译结果:
a=1,b=2
fun0_a:10,fun_b0:20
a=1,b=2
fun1_a:10,fun_b1:20
a=10,b=2
*/
//总结:输出参数a,形参通过地址改变实参。
/*输出参数——MyStrcpy(返回指针)*/
//输出参数——dest
#include <stdio.h>
char *MyStrcpy(char *dest,char *str)
{
char *head=dest;
while(*str!=0)
{
*dest++=*str++;
}
*dest=0;
return head;
}
int main()
{
char buff[128];
char *p=NULL;
p=MyStrcpy(buff,"QWER");
printf("buff=%s\n",buff);
printf("p=%s\n",p);
}
/*编译结果:
buff=QWER
p=QWER
*/
/*总结:
MyStrcpy(buff,"QWER");buff为地址,形参改变,实参改变。
p为buff的地址,head为buff的地址,dest为buff的地址。
*/
/*输出参数——整型数组赋值*/
#include <stdio.h>
int *fun(int *buff,int num)
{
int i;
int *head=NULL;
head=buff;
for(i=0;i<10;i++)
{
*buff++=i;
}
return head;
}
int main()
{
int i;
int buff[10]={12,34,56,78,90};
int *p=NULL;
p=fun(buff,10);
printf("buff[10]=");
for(i=0;i<10;i++)
{
printf("%d ",*(buff+i));
}
printf("\nfun_buff[10]=");
for(i=0;i<10;i++)
{
printf("%d ",*p++);
}
}
/*编译结果:
buff[10]=0 1 2 3 4 5 6 7 8 9
fun_buff[10]=0 1 2 3 4 5 6 7 8 9
*/