形参和实参
传值和传址
#include <stdio.h>
void swap(int x,int y);
void swap(int x,int y)
{
int temp;
printf("In main,互换前:x=%d,y=%d\n",x,y);
temp = x;
x = y;
y = temp;
printf("In main,互换后:x=%d,y=%d\n", x, y);
}
int main()
{
int x=3,y=5;
printf("In main,互换前:x=%d,y=%d\n",x,y);
swap(x,y);
printf("In main,互换后:x=%d,y=%d\n", x, y);
return 0;
}
#include <stdio.h>
void swap(int *x,int *y);
void swap(int *x,int *y)
{
int temp;
printf("In main,互换前:x=%d,y=%d\n",*x,*y);
temp = *x;
*x = *y;
*y = temp;
printf("In main,互换后:x=%d,y=%d\n", *x, *y);
}
int main()
{
int x=3,y=5;
printf("In main,互换前:x=%d,y=%d\n",x,y);
swap(&x,&y);
printf("In main,互换后:x=%d,y=%d\n", x, y);
return 0;
}
#include <stdio.h>
void get_array(int a[10]);
void get_array(int a[10])
{
int i;
a[5] = 520;
for (i=0;i<10;i++)
{
printf("a[%d]=%d\n",i, a[i]);
}
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
int i;
get_array(a);
printf("在main函数里边再打印一次。。。\n");
for (i=0;i<10;i++)
{
printf("a[%d]=%d\n",i, a[i]);
}
return 0;
}
C语言只是把数组的第一个元素的地址传递过去
可变参数
#include <stdarg.h>
#include <stdio.h>
#include <stdarg.h>
int sum(int n, ...);
int sum(int n, ...)
{
int i, sum = 0;
va_list vap;//va_list定义参数列表 vap字符指针
va_start(vap,n);//va_start初始化参数列表
for (i=0; i<n; i++)
{
sum += va_arg(vap,int);//va_arg获取参数的值
}
va_end(vap);//va_end关闭参数列表
return sum;
}
int main()
{
int result;
result = sum(3,1,2,3);
printf("result1 = %d\n",result);
result = sum(5,1,2,3,4,5);
printf("result2 = %d\n",result);
result = sum(6,1,2,3,4,50,60);
printf("result3 = %d\n",result);
return 0;
}