函数注意事项和细节讨论

 

//如果希望函数内的变量能修改函数外的变量,可以传入变量的地址&,
//函数内以指针的方式操作变量。从效果上看类似引用(即传递指针) 
void f3(int *p) {
    (*p)++;// 修改会对函数外的变量有影响
}

//c语言不支持函数重载即不能通过参数的个数不同,或者类型不同来区别函数
//void f2(int n, int n2) {
//    
//}

#include <stdio.h>
#include <stdarg.h>

//说明
//num 表示传递的参数格式
//... 表示可以传递多个参数和num一致即可
int fun(int num, ...) //可变函数,即参数的个数可以不确定, 使用... 表示
{
	int i, totalSum=0; //totalSum 一定要初始化
	int val = 0;
	va_list v1;			//v1实际是一个字符指针,从头文件里可以找到 
	va_start(v1, num);		//使v1指向可变列表中第一个值,即num后的第一个参数 
	printf("*v = %d\n",*v1);
	for(i = 0; i < num; i++)		//num 减一是为了防止下标超限 
	{
		val = va_arg(v1, int);	//该函数返回v1指向的值,并使v1向下移动一个int的距离,使其指向下一个int 
		printf("val = %d\n", val); // val = 10 val=30 val=60
		totalSum += val;
	 } 
	va_end(v1);	//关闭v1指针,使其指向null
	return totalSum;
}

void main() {
	int res = fun(8, 10,30,60, -100,1,5,7,98);
	printf("和是=%d", res);
	getchar();
}



请编写一个函数 swap(int *n1, int *n2) 可以交换 n1 和 n2的值

#include <stdio.h>
//说明
//1. 函数名为swap
//2. 形参是两个指针类型 int*
void swap(int *n1, int *n2) {
	int temp = *n1; //表示将 n1 这个指针指向的变量的值赋给 temp
	*n1 = *n2; // 表示将 n2 这个指针指向的变量的值赋给 n1这个指针指向的变量
	*n2 = temp; //表示将 temp 值赋给 n2这个指针指向的变量
}

void main() {
	int n1 = 1;
	int n2 = 2;
	swap(&n1, &n2);
	printf("main n1=%d n2=%d", n1, n2);// n1= 2 n2 = 1
	getchar();
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值