对于学习C语言的同学来说,printf("%d",i);语句对你来说是很平常的吧。那么就让我们来看看这个函数的定义:void printf(const char * format,...),以我们C语言的经验来看,后面的参数...是怎么回事?翻阅了很多书籍得到...表示可变长度的参数标识。在C编译器中有一个规则,表示在调用printf()函数的时候,会把参数进栈,那么它们的规则则是后面的可变的参数在参数format后面依次进栈。那么用一个指针指向format,然后减去format的长度,那么现在指针就指向可变参数的第一个参数。
printf函数是利用format的字符串中的%d等字段来判断参数的类型是什么;然后在printf函数中必须依次查询%d等命令,它依次把它转换成字符串,然后输出整个字符串。