为什么win32 /标准库函数参数几乎总是作为指针而不是引用传递?

时间:2013-07-14 05:13:02

标签: c++ string winapi pointers reference

从我个人的cpp经验来看,我学会了通过指针将对象传递给函数,如果这样的参数可以为NULL,并且如果参数永远不应该是NULL /则应该在传递之前实例化。 我当时想知道为什么在编写

这样的函数时
HANDLE WINAPI CreateFile(
  _In_      LPCTSTR lpFileName,
...
);

explicit basic_iostream(basic_streambuf<Elem, Tr> *_Strbuf);

Microsoft选择将这些参数作为指针而不是引用,特别是因为函数在传递NULL值时只是错误...

那么为什么每次将字符串(或其他类型)作为参数传递时,它都会作为指针(而不是引用)传递?

我问这个是因为我还没有看到你通过引用而不是指针传递字符串的任何实例,我觉得我错过了一些可验证的原因,我可以在代码中反映出来,为什么呢是这样做的。

1 个答案:

答案 0 :(得分:4)

您正在查看Win32 API,而不是标准库。

Win32使用指针而不是引用,因为它旨在与语言无关。为此,它使用C(或类似的东西)作为“最小公分母” - 并且C没有引用类型,因此API也不使用它。

C ++标准库确实使用了很多引用(例如,几乎所有与iostream一起使用的引用都通过引用传递它们。