//如果希望函数内的变量能修改函数外的变量,可以传入变量的地址&,
//函数内以指针的方式操作变量。从效果上看类似引用(即传递指针)
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();
}