当前位置: 首页 > 面试题库 >

指针什么时候惯用的?

郭洋
2023-03-14
问题内容

我来自没有显式指针的语言,因此我不太了解它们的存在重点(无双关语)。

问题是,在大多数情况下,我不知道为什么要传递指向函数的指针。我确实知道,当您传递一个指针时,到处都会对该变量进行修改,但这有什么意义呢?为什么不修改值并返回结果呢?

例如,http.HandlerFunc是一个函数,该函数接收http.ResponseWriter*http.Request作为参数。我读过接口实际上是指针(是吗?),但是我没有得到的是为什么?

为什么我要指向作家?我没有修改它,只是在写它。而且,为什么我要获得指向请求的指针?我正在做类似的事情request.FormValue()

通过这些示例,我试图确定的是以下问题的答案:“何时需要传递指针?”

现在,我的方法是编写代码,尝试对其进行编译,并通过添加与号和星号来修复必须通过指针的错误,直到错误通过。但是,我感觉这种半被理解的指针概念很快就会在后天咬我。


问题答案:

您可以将指针视为指向对象的内存地址的值。与大多数数据结构相比,指针较小(例如8个字节)。

很多时候,您将获得一个指向对象的指针,因为传递这8个字节比创建要传递的整个对象的副本要快得多。

在使用Request对象的情况下,与仅传递可以访问原始数据的指针相比,在请求下创建所有内容(有效负载,标头和其他内容)的副本将非常昂贵。



 类似资料:
  • 问题内容: 我习惯于进行Java编程,在编程时,您无需真正考虑指针。但是,此刻我正在用C ++编写程序。在创建具有其他类成员的类时,何时应该使用指针,何时不应该使用指针?例如,什么时候我想这样做: 与此相反: 问题答案: 首先避免指针。 在以下情况下使用它们: 您想使用Pimpl习惯用法或抽象工厂。 该实例实际上是由程序的其他部分管理的,而该类仅需要能够访问它。 您想推迟对象的构建(即,您想 在

  • 作为Rust的一个学习项目,我有一个非常简单的单链表实现(如果不完整,也可以使用)。结构的声明如下所示: 实施和都是相当直接的,尽管反复实施size确实涉及到一些“与借阅检查人的斗争” 我想尝试的下一件事是向LinkedList结构添加一个尾部指针。以启用有效的push_back操作。在这里,我碰到了一堵墙。起初我试图使用

  • 我一直在看米切尔、奥尔德姆和塞缪尔的高级Linux编程。我在pthread的章节中看到了一些让我困惑的关于空指针和铸造的内容。 将参数传递给pthread_create(),它们不会将指针强制转换为空指针,即使这是函数所期望的。 这里,which_prime类型为int。 但是使用pthread_join从线程返回一个值,它们会将变量强制转换为void指针。 这里,prime也是int类型。 为什

  • 问题内容: 我看到了很多有关JDBC / MySQL的“最佳实践”指南,它们告诉我指定setFetchSize()。 但是,我不知道何时指定以及要指定什么(语句,结果集)。 在这两个中,我应该指定什么? 从javadoc和oracle文档中,这是我对“何时”感到困惑的地方 Java文档 默认值由创建结果集的Statement对象设置。提取大小可以随时更改。 甲骨文文档 生成结果集后,对语句对象的提

  • 本文向大家介绍什么是指向指针的指针? 相关面试题,主要包含被问及什么是指向指针的指针? 时的应答技巧和注意事项,需要的朋友参考一下 指针指向的变量是一个指针,即具体内容为一个指针的值,是一个地址. 此时指针指向的变量长度也是4位.

  • 首先,澄清一下,我说的不是取消引用无效指针! 考虑以下两个例子。 例1 [3.17]不确定值-未指定值或陷阱表示 后来呢: [6.2.4p2]当指针指向的对象达到其生存期的末尾时,指针的值就变得不确定。 所有这些加在一起,我们在访问指向“死”对象的指针时有什么限制?