众所周知,C中有这么一些函数,其参数个数并不是固定的,对于初学者而言经常接触到的最可能的就数printf,scanf之类了.
例如
#include<stdio.h>
#include<stdafx.h>
void f1(int len,...)//使用可变参数,“...”代表可变参数
{
int *p; //定义指针用于指向可变参数地址
p=&len+1; //+1为跳过int型变量直接指向可变参数内数据
while(len--) //循环读取
{
printf("%d",*p); //输出可变参数地址内的数据
p++; //指向下一个可变参数数据
}
}
int main(void)
{
f1(3,100,200,150);
f1(4,132,220,750,1080);
f1(2,200,150);
}
通过第一个变量来确定可变参数的储存位置,一般都是第一个变量的地址+第一个变量所占用的字节数,这样就可以定位到可变参数的位置。然后通过通过指针读取数据即可。
例如
#include<stdio.h>
#include<stdafx.h>
void f1(int len,...)//使用可变参数,“...”代表可变参数
{
int *p; //定义指针用于指向可变参数地址
p=&len+1; //+1为跳过int型变量直接指向可变参数内数据
while(len--) //循环读取
{
printf("%d",*p); //输出可变参数地址内的数据
p++; //指向下一个可变参数数据
}
}
int main(void)
{
f1(3,100,200,150);
f1(4,132,220,750,1080);
f1(2,200,150);
}
通过第一个变量来确定可变参数的储存位置,一般都是第一个变量的地址+第一个变量所占用的字节数,这样就可以定位到可变参数的位置。然后通过通过指针读取数据即可。