|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 BaysideLizard 于 2023-11-14 22:24 编辑
- #include <stdio.h>
- #include <stdarg.h>//实现可变参数
- //DNX写于2023年11月3日
- void swap(int *x,int *y);
- void get_array(int a[10]);
- int sum(int n,...);
- int main()
- {
- int x = 3,y = 5;
- printf("向函数传地址实验:\n");
- printf("main中,互换前:x = %d,y = %d\n",x,y);
- swap(&x,&y);//向函数传地址
- printf("main中,互换后:x = %d,y = %d\n",x,y);
- putchar('\n');
- int a[10] = {0,1,2,3,4,5,6,7,8,9};
- printf("向函数传数组实验:\n");
- get_array(a);//实际向函数传的是数组第一个元素的地址
- printf("main中 a:\n");
- for(int i = 0;i < 10;i++)
- {
- printf("a[%d] = %d\n",i,a[i]);
- }
- printf("main中sizeof a is %d\n",sizeof(a));
- putchar('\n');
- printf("可变参数的函数实验:\n");
- int result;
- result = sum(5,5,4,3,2,1);
- printf("5+4+3+2+1 = %d",result);
- return 0;
- }
- void swap(int *x,int *y)
- {
- int temp;
- printf("swap中,互换前:x = %d,y = %d\n",*x,*y);
- temp = *x;
- *x = *y;
- *y = temp;
- printf("swap中,互换后:x = %d,y = %d\n",*x,*y);
- }
- void get_array(int a[10])
- {
- printf("get_array中 a:\n");
- a[2] = 0;//在get_array函数中修改了a[2]的值,main函数中看a[2]也被修改。
- for(int i = 0;i < 10;i++)
- {
- printf("a[%d] = %d\n",i,a[i]);
- }
- printf("get_array中sizeof a is %d\n",sizeof(a));
- }
- int sum(int n,...)//可变参数用...占位
- {
- int i,res = 0;
- va_list vap;//定义参数列表
- va_start(vap,n);//传入va_start宏
- for(int i = 0;i < n;i++)
- {
- res += va_arg(vap,int);//获取后边参数的值
- }
- va_end(vap);//关闭参数列表
- return res;
- }
复制代码
运行结果:
向函数传地址实验:
main中,互换前:x = 3,y = 5
swap中,互换前:x = 3,y = 5
swap中,互换后:x = 5,y = 3
main中,互换后:x = 5,y = 3
向函数传数组实验:
get_array中 a:
a[0] = 0
a[1] = 1
a[2] = 0
a[3] = 3
a[4] = 4
a[5] = 5
a[6] = 6
a[7] = 7
a[8] = 8
a[9] = 9
get_array中sizeof a is 8
main中 a:
a[0] = 0
a[1] = 1
a[2] = 0
a[3] = 3
a[4] = 4
a[5] = 5
a[6] = 6
a[7] = 7
a[8] = 8
a[9] = 9
main中sizeof a is 40
可变参数的函数实验:
5+4+3+2+1 = 15
Process returned 0 (0x0) execution time : 0.006 s
Press any key to continue.
在FishC学C的第十四天 |
|