代码之家  ›  专栏  ›  技术社区  ›  Shiva

C中的指针以及在应用程序中使用的频率?

  •  4
  • Shiva  · 技术社区  · 15 年前

    对我来说,指针是C++编程语言中最难的概念之一。当我学习C++的时候,我花了大量的时间来学习它。然而,现在我主要工作在完全用C语言和VB.NET等语言编写的项目中。事实上,我已经将近4年没有接触过C++了。尽管C有指针,但我没有遇到必须在C中使用指针的情况。所以我的问题是,我们可以通过使用指针在C中获得什么样的生产力?指针的使用必须在什么情况下进行?

    4 回复  |  直到 15 年前
        1
  •  2
  •   BFree    15 年前

    就个人而言,我从来没有必要在.NET中使用指针,但是如果您处理的是绝对性能关键的代码,那么您将使用指针。如果您查看System.String类,您将看到许多处理字符串操作的方法都使用指针。此外,在处理图像处理时,通常使用指针很有用。现在,我们可以明确地争论这些类型的应用程序是否应该首先用.NET编写(我认为他们应该这样做),但至少如果需要挤出更多的速度,您可以这样做。

        2
  •  3
  •   David Thornley    15 年前

    您已经在c_中使用了很多指针,只是它们看起来不像指针。每次对类的实例执行操作时,都是一个指针。你已经得到了几乎所有的潜在利益,没有麻烦。

    在C中可以更明确地使用指针,这是大多数人所说的C指针,但我认为这种情况非常罕见。它们对于链接到C库之类的库可能很有用,但除此之外,我认为它们没有什么用处。

        3
  •  1
  •   OregonGhost    15 年前

    我在C语言中使用指针,只是在很少的情况下使用,这些情况大多与发送/接收数据有关,在这种情况下,必须将字节数组转换为结构,反之亦然。尽管如此,通常也不需要直接处理指针。

    在某些情况下,可以使用指针来提高性能,因为对于封送拆收器,有时必须复制内存来访问数据,而对于指针,则可以直接访问数据(想想 Bitmap.Lock() )

        4
  •  0
  •   Rob    15 年前

    就我个人而言,我从来没有必要使用C中的指针。如果我需要这样的功能,我在C++中用C++编写代码。如果我需要把指针从C ^传递到C++ +CLI,反之亦然,我将它们作为一个 国际乒乓球联合会 并将其转换成我在C++/CLI中所需要的类型。

    在我看来,如果你在C语言中使用指针,在99%的情况下,你使用的语言是错误的。

    编辑: C++/CLI的优点是您可以为纯本地编译标记单独的类。我做了很多图像处理工作,需要非常快地完成;它使用了很多基于指针的代码。我通常有一个托管C++/CLI对象向前调用到一个本地C++对象,在那里我的处理发生。我为本地代码和Viola启用了优化,获得了很好的性能提升。

    当然,这只在通过执行本机优化代码获得的性能提高可以抵消托管到非托管转换的开销时才重要。在我的情况下,总是这样。