stdarg.h
stdarg.hÊÇC±ê×¼º¯Êý¿âµÄÍ·Îļþ£¬Ö÷ҪĿµÄÊÇΪÈú¯ÊýÄܹ»½ÓÊÕ²»¶¨²ÎÊý¡£µ±ÐèÒª¶¨Òå¿É±ä²ÎÊýº¯Êýʱ£¬ÐèÒª°üº¬¸ÃÍ·Îļþ¡£
?
?
?
ÏÈ´ÓÒ»¸öÀý×Ó˵Æð£¬Õâ¸öÀý×ÓÏë·¨À´×Ô<
>
?
#include
#include
enum drink{apple = 3,banana = 4,orange = 5,other = 6}; int count(int n,...) { int total = 0; va_list ap; va_start(ap,n); for (int i = 0; i < n; ++i) { total += (int) va_arg(ap, enum drink); } va_end(ap); return total; } int main() { printf(cost %d ,count(3,apple,orange,other)); printf(cost %d ,count(5,apple,apple,banana,other,orange)); }
?
¸ÃÀý×Ó¶¨ÒåÁËÒ»¸öÒûÁϵÄÀàÐÍ£¬²¢É趨ºÃÁËÒûÁϵļÛÇ®¡£
Ö®ºóÓÖ¶¨ÒåÁËÒ»¸öº¯ÊýcountÀ´Í³¼Æ¼Û¸ñ£¬µÚÒ»¸ö²ÎÊý±íʾ¹ºÂòµÄ¸öÊý£¬Ö®ºóΪ¹ºÂòµÄÆ·ÖÖ£¨¿É±ä£©£¬×îºóµÃµ½»¨·ÑµÄ×ܼÛÇ®¡£
//²»¶¨²ÎÊýº¯ÊýÖÁÉÙÓÐÒ»¸öÃüÃûµÄ²ÎÊý
?
Êä³ö£º
?
cost 14
cost 21
Program ended with exit code: 0
?
?
?
?
ÏÖÔÚ˵һÏÂÔÀí£º
¼ÈÈ»º¯ÊýÖÁÉÙÓÐÒ»¸öÃüÃûµÄ²ÎÊý£¬ÄÇô¾ÍÓÐÁËÒ»¸ö»ù×¼£¬¾Í¿ÉÒÔ¶¨ÒåÖ¸Õë¸ù¾Ý¸Ã»ù×¼±äÁ¿µÄµØÖ·¶¨Î»µ½ºóÐø²ÎÊýµÄÆðʼµØÖ·¡£
Èç¹ûÔÙÖªµÀºóÐø²ÎÊýµÄÀàÐÍ£¬ÄÇô¸ù¾Ý²ÎÊýÀàÐ͵ij¤¶È£¬¿ÉÒÔͨ¹ýÖ¸ÕëÈ¡µÃ²ÎÊýµÄÖµ¡£
?
?
?
ÔÙ½éÉÜÒ»ÏÂÄÇ4¸öºêµÄÓÃ;£º
?
va_list £º ¶¨ÒåÉÏÊöµÄÄǸöÖ¸Õë
va_start £º¶¨Î»ºóÐø±äÁ¿µÄµØÖ·¡£ÓÉÓÚÖÁÉÙÓÐÒ»¸ö¿É±ä²ÎÊý£¨¿ÉÒÔÓжà¸ö£©£¬¸ù¾Ý¶¨Î»×îºóÒ»¸öÒÑÖª²ÎÊýÀ´ÖªµÀºóÐø²ÎÊýµÄÆðʼµØÖ·¡£
va_arg £º ¸ù¾ÝºóÐø²ÎÊýµÄÀàÐÍ£¬Í¨¹ýÖ¸Õ뽫Êý¾ÝÈ¡³ö¡£
va_end : ½øÐÐһЩ½áÊø¹¤×÷
?
?
?
×îºó»Ø¹ýÀ´½âÊÍÒ»ÏÂ×îÇ°ÃæµÄÀý×Ó£º
Ïȶ¨ÒåÁËÒ»¸öÖ¸Õë va_list ap£»
ͨ¹ý va_startº¯Êý ½«Ö¸Õëap ÓëÒÑÖª²ÎÊýnÁªÏµÆðÀ´£¬¶¨Î»µ½ºóÐø²ÎÊýµÄÆðʼµØÖ·¡£
¶¨Î»ºÃÖ®ºóºóͨ¹ýva_argº¯Êý¡£ÀûÓÃÖ¸ÕëapºÍ²ÎÊýÀàÐÍÀ´»ñµÃÊý¾Ý£¬ÓÉÓÚ¸ÃÀý×ÓµÚÒ»¸ö²ÎÊýÊǸöÊý£¬ÖªµÀforÑ»·Òª½øÐÐÇóºÍµÄ´ÎÊý¡£
×îºó½áÊøva_end¡£
?
?
?
?
?
?
?