【问题标题】:Two questions in C++ languageC++语言中的两个问题
【发布时间】:2011-04-28 15:33:39
【问题描述】:

我正在学习 C++ 语言。有两个概念我想不通:

  1. new 和 malloc 有什么区别?
  2. 指针和引用有什么区别?

谁能帮忙?


问题的原始标题和关于学习的声明说问题是关于 C,而不是 C++。但是这些问题显然是关于 C++,而不是 C,因为每个问题中的两个项目之一在 C 中并不作为相关概念存在。

【问题讨论】:

  • 嗯...我认为 C 中不存在 new ;) 你说的是 C# 还是 C++?
  • 区别在于new和引用在C中是不存在的,所以你不必担心它们。
  • @larsman:令人担忧的是他们造成的 :)

标签: c++ pointers


【解决方案1】:

C 不是 C++。

new 是您在 C++ 中分配内存调用构造函数的方式。 malloc 只是在 C 和 C++ 中分配内存。

指针可以为 NULL - 也就是指向已定义的无效位置。引用(在 C 中不存在)将始终引用某些内容 - 它不能合法地引用无效位置。

【讨论】:

  • 此外,引用不可重置,一旦创建它们,它们就是原始对象的 别名,并且所有进一步的操作都适用于该对象,而指针具有自己的实体.
【解决方案2】:

我假设您问的是 C++,而不仅仅是 C。

  1. malloc()是最常用的内存分配函数;它至少分配用户请求的字节数。 new 是 C++ 独有的,是操作符而不是函数调用;它在分配内存后调用类的构造函数。

  2. 指针是存储内存地址的变量。 reference 是 C++ 独有的;这是一个本质上看起来像变量已重命名的抽象。

【讨论】:

    【解决方案3】:

    引用允许您将实际变量而不是其副本传递给函数,因此可以对其进行修改,而不会出现指针可能引起的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-04
      • 2016-01-21
      • 2022-06-29
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      相关资源
      最近更新 更多