No limit argument in function

No replies
Edkung
Edkung's picture
User offline. Last seen 7 hours 12 min ago. Offline
Joined: 11/29/2009

คงจะเคยเห็น Function บาง Function ในภาษา C++ ที่รับ Argument ได้ไม่จำกัดจำนวน ยกตัวอย่างเช่น printf() วันนี้เลยอยากนำมาเสนอว่า Function แบบนี้สร้างอย่างไร แค่นี้แหละ ไม่มีอะไรมาก

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

void NoLimit(char* sz_print,...)
{
	va_list args; // สร้างตัวแปรแบบ va_list เพื่อเอาไว้เก็บค่าของ no limit argument
	va_start(args,sz_print); // initialize ค่าของ args โดย sz_print คือ argument ที่อยู่ก่อนหน้า ...
	char* str = sz_print; // ใส่ค่าเริ่มต้นให้ str
	do
	{
		printf("%s\n",str);
		str = va_arg(args,char*); // เรียก argument ตัวถัดไปมาเก็บไว้ใน str
	}
	while (str != NULL);
	va_end(args);
}

int main(int argc, char **argv)
{
  NoLimit("1","2","3",NULL);
  return 0;
}

 ง่ายไม๊ละ ^^