2012-08-26 23 views
0

当我们使用printf()具有不同像printf()中任意数量的参数。这在C编程中称为什么?

printf("Hello"); 

printf("%d",a); 

printf("%d%d",b,c); 

这是为什么不叫“超载”的参数的数目(使用同样的方法与不同的任务进行)? 如果它是重载,那么为什么C不被视为面向对象的编程语言?

+0

printf是一个函数,而不是一个方法。一个方法是一个Class的函数。类是“面向对象编程”语言的概念。 C只有结构,但你可以在C中使用面向对象的概念进行编程。 – pce

+0

你可以通过'stdarg.h' – lightburst

回答

2

这不是方法重载。只是碰巧printf收到一个可选的vargs作为第二个参数,也就是一个可变参数列表。

int printf(const char * format,...);

将格式化数据打印到 stdout向标准输出(stdout)写入格式为format参数指定的数据序列 。格式 参数后,该函数至少需要格式中指定的附加参数 。

3

这是为什么不叫 “超载”

因为你使用相同的功能

int printf(const char *restrict format, ...); 

一个用于重载前提是必须有不同的功能/方法命名相同。在这里,我们只有一个功能,虽然非常灵活,这要归功于可变参数功能。

0

面向对象编程是指包含封装,消息传递,继承和多态的范型。换句话说,OO意味着定义classvirtual函数覆盖。这与重载不同,后者是根据参数的类型在函数中执行不同的操作。

printf()做什么既不是超载也不覆盖。这是一个可变长度的参数列表。

+0

谢谢你的解释..我明白不同之处它们之间... –

相关问题