- 传值
#include<stdio.h>
void swap(int x,int y);
void swap(int x,int y)
{
printf("swap before:a=%d b=%d\n",x,y);
int temp;
temp=x;
x=y;
y=temp;
printf("swap after:a=%d b=%d\n",x,y);
}
int main()
{
int a=3;
int b=5;
printf("In main :swap before:a=%d b=%d\n",a,b);
swap(a,b);
printf("In main:swap after :a=%d b=%d\n",a,b);
return 0;
}
2.传址
#include<stdio.h>
void swap(int *x,int *y);
void swap(int *x,int *y)
{
printf("swap before:a=%d b=%d\n",*x,*y);
int temp;
temp=*x;
*x=*y;
*y=temp;
printf("swap after:a=%d b=%d\n",*x,*y);
}
int main()
{
int a=3;
int b=5;
printf("In main :swap before:a=%d b=%d\n",a,b);
swap(&a,&b);
printf("In main:swap after :a=%d b=%d\n",a,b);
return 0;
}
3.传数组
#include<stdio.h>
void get_array(int a[10]);
void get_array(int a[10])
{
int i;
a[5]=125;
for(i=0;i<10;i++)//传递的只是第一个元素的地址
{
printf("a[%d]=%d\n",i,a[i]);
}
printf("size of a:%d\n",sizeof(a));
}
int main()
{
int i;
int a[10]={1,2,3,4,5,6,7,8,9,0};
printf("In main:size of a:%d\n",sizeof(a));
get_array(a);
printf("In main:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
4.可变参数
#include<stdarg.h>
-va_list
-va_start
-va_arg
-va_end
#include<stdio.h>
#include<stdarg.h>
int sum(int n,...);//n是表示有多少个参数,...占位符参数的个数不确定
int sum(int n,...)
{
int i,sum=0;
va_list vap;//定义参数列表
va_start(vap,n);//初始化参数
for(i=0;i<n;i++)
{
sum += va_arg(vap,int);//获取参数的值 写清楚什么类型(int)
}
va_end(vap);//关闭参数列表
return sum;
}
int main()
{
int result1,result2;
result1=sum(3,2,1,4);
printf("result1=%d\n",result1);
result2=sum(3,-2,3,4);
printf("result2=%d\n",result2);
return 0;
}