返回顶部
首页 > 资讯 > 后端开发 > GO >通过指针修改数据
  • 463
分享到

通过指针修改数据

2024-04-05 00:04:28 463人浏览 八月长安
摘要

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《通过指针修改数据》,文章讲解的知

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《通过指针修改数据》,文章讲解的知识点主要包括,如果你对golang方面的知识点感兴趣,就不要错过编程网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

https://play.Golang.org/p/dohyaih53ek

我不明白 *&p 操作,也不明白指针 *p (它是 int() 值而不是内存地址 )如何能够修改其 value,即 valuex = valuey。我知道我一定是误解了什么,但这段代码实际上似乎是自相矛盾的。

//point

package main

import "reflect"

var pt int = 27

func main() {
    println(reflect.TypeOf(pt))
    println("pt = ", pt)   //value of pt
    println("&pt = ", &pt) //memory address of pt
    updatePointer(&pt)
    println("pt = ", pt) //value of pt
}

func updatePointer(p *int) { //requires memory address of an int
    println("&p = ", &p)                                //memory address of p
    println("p = ", p)                                  //memory address of pt
    println("*p before = ", *p)                         //value of pt
    println(*p == 27)                                   //true
    *p = 14                                             //27 = 14??????????
    println("*p =", *p)                                 //value of pt
    println(reflect.TypeOf(&pt) == reflect.TypeOf(*&p)) //true!!!?????
    println("*&p = ", *&p)                              //memory address which p's memory address evals to???? 0x800 (p) -> 0x900 (pt) = 0x800 (p)?
}


解决方案


首先考虑 *&p 让我们简化示例(删除所有不相关的内容)

var pt int = 27
p := &pt // because &pt is passed as the argument into updatepointer
*p = 14  // this assigns 14 to whatever p points to (i.e. pt)
println(reflect.typeof(&pt) == reflect.typeof(*&p))

*& 不执行任何操作(而且我认为没有理由在实际应用程序中使用它);该语句获取 p 的地址(&p 位),然后获取结果指向的内容 (p)。所以这需要重写

println(reflect.typeof(&pt) == reflect.typeof(p))

p 指向 pt,因此 p == &pt (根据定义,这意味着 *p == pt)。这意味着它们是相同的东西,因此当然具有相同的类型。

那么为什么 *p = 14 有效呢?您说“*p 是一个 int() 值而不是内存地址,它能够修改其值”,但这并不完全是 the spec 所说的:

所以 *p = 14 的意思是将 p 指向的变量设置为 14。

现在让我们看看你的第二个问题:

// why can't i do the following?

func updatepointer(p *int){
    p = 14
    //or
    &p = 14
    //or
    *&p = 14
}

所以 p 是一个指向整数的指针(这就是 *int 的意思)。说 p = 14 是尝试将指针(而不是 int)设置为值 14。14 是 int 而不是指针,因此编译器错误 不能在赋值 中使用 14(类型 int)作为类型 *int。

&p = 14 表示将 p 的地址设置为 14。p*int,因此获取地址将为您提供 **int (指向 int 指针的指针)。您将得到的编译器错误是 cannot allocate to &p ,这是因为 &p 的结果不是 addressable。您可以通过说来解决这个问题

x := &p
x = 14

这会给你一个你可能期望的错误,根据我上面所说的:cannot use 14 (type int) as type **int in assignment.

*&p = 14p=14 基本相同(它获取 p 的地址,然后获取 wis 处的结果指向 p)。

指针可能会变得非常混乱(尤其是在人为的示例中),this article 可能会帮助您理解。

今天关于《通过指针修改数据》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

您可能感兴趣的文档:

--结束END--

本文标题: 通过指针修改数据

本文链接: https://www.lsjlt.com/news/596643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 通过指针修改数据
    编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《通过指针修改数据》,文章讲解的知...
    99+
    2024-04-05
  • 如何通过CSS改变鼠标指针
    在Web开发中,CSS一直扮演着关键的角色。它不仅可以控制网站的样式和布局,还可以添加特殊效果和交互式功能。其中一个有趣的特性是改变鼠标指针,让用户在操作时获得更好的视觉反馈和提示。接下来,本文将介绍如何通过CSS改变鼠标指针,并举例说明它...
    99+
    2023-05-14
  • 通过数据库修改trove instance status
    由于测试mysql5.5的复制功能,默认trove使用gtid,instance 一直处于 BACKUP 状态,trove reset-status 不能在 BACKUP 状态下运行,手动修改数据库修改&n...
    99+
    2024-04-02
  • Golang 函数可以通过指针返回值吗?
    是的,go 函数可以通过指针返回值。通过指针返回值,函数可以修改外部变量的值。具体步骤如下:定义一个函数,其中返回一个指针类型。在函数中,使用指针修改外部变量的值。在调用函数时,传递外部...
    99+
    2024-04-13
    指针 golang
  • mysql通过命令行修改数据库信息
    1.语法: ALTER DATABASE 数据库名 CHARACTER SET 编码 COLLATE 校对规则2.语法解析: 数据库名:demo1 编码:编码集中之一比如utf8  &n...
    99+
    2024-04-02
  • Win10鼠标指针如何修改?Win10鼠标指针改动的方式
    坚信许多应用Win10系统软件的小伙伴们鼠标指针款式全是应用默认设置,有一些同学便会感觉较为太简单,要想变更却不知怎样实际操作,那麼面对这样的状况要怎么办呢?下边就和小编一起来看一下有哪些操作步骤吧。Win10鼠标指针改动的方式鼠标单击逐渐...
    99+
    2023-07-17
  • 如何通过PHP代码来修改数据库中的数据
    在使用PHP开发Web应用程序时,数据库是重要的一部分。在大多数情况下,我们需要添加、删除或修改数据库中的数据。在这篇文章中,我们将讨论如何通过PHP代码来修改数据库中的数据。以下是一个示例数据库表:CREATE TABLE users (...
    99+
    2023-05-14
  • 如何通过函数指针调用自定义 PHP 函数?
    函数指针是 php 中的数据类型,用于动态调用函数,无需明确指定函数名。要声明函数指针,请使用 $functionpointer = 'function_name' 语法。要调用函数指针...
    99+
    2024-04-22
    php 函数指针
  • Golang 指针混淆,如何从函数获取指针,然后传递给修改函数
    问题内容 我想使用库(golang walk声明式),它希望我传递一个指针变量,并且库稍后将用一个实例填充它。 出于簿记目的,我尝试创建一个函数来返回引用并进一步传递它,但在原始函数中...
    99+
    2024-02-06
  • 怎样修改win7鼠标指针 win7鼠标指针怎么换
    win7的美化对于每个用户来说都那么重要,正是因为它的界面效果才迎来了许多用户的喜爱,喜欢美化桌面的朋友可以通过替换元素的方式修改鼠标各项指针,包括指针、后台、忙等状态,为你的桌面添上一道靓丽的风景。 1、用户需打开【参...
    99+
    2023-06-02
    win7鼠标指针 win7鼠标指针包 win7鼠标指针怎么换 win7 指针 鼠标
  • C语言中怎么通过指针参数返回值
    今天小编给大家分享一下C语言中怎么通过指针参数返回值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。简单的案例深夜无聊而引发的...
    99+
    2023-07-05
  • C语言中如何通过指针参数返回值
    目录简单的案例深夜无聊而引发的问题回归正题简单的案例2.0链表中"迷人"的指针再度分析总结简单的案例 深夜无聊而引发的问题 一般来说,在C语言中一个函数顶多只能返...
    99+
    2023-02-24
    C语言指针 C语言参数返回值 C语言参数
  • 如何通过PHP代码来修改留言板数据
    随着网络技术的飞速发展,网页留言板已经成为了一个非常方便的交流平台。PHP留言板就是其中一种常见的留言板类型,它结合了PHP脚本语言和MySQL数据库技术。这种留言板非常易于使用和修改,可以满足不同用户的各种需求。在本篇文章中,我们将重点介...
    99+
    2023-05-14
  • 怎么通过修改jdbc配置文件方式修改Weblogic数据源密码
    这篇文章主要讲解了“怎么通过修改jdbc配置文件方式修改Weblogic数据源密码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过修改jdbc配置文件方式修改Weblogic数据源密码...
    99+
    2023-06-04
  • sql如何修改指定数据
    要修改指定数据,可以使用UPDATE语句。以下是一个更新指定数据的示例:```sqlUPDATE 表名SET 列名1 = 新值1, ...
    99+
    2023-08-29
    sql
  • Discuz X2通过数据库批量替换修改帖子内容
    今天一个朋友的Discuz X2论坛需要批量替换帖子的内容,帖子数量上万,一开始是通过设置词语过滤,发现无效果,只能通过数据库批量替换了,具体方法请接着往下看。 Discuz X2论坛后台提供数据库SQL语句操作的功能,...
    99+
    2022-06-12
    Discuz 批量修改 帖子
  • PHP8如何通过Nullsafe Operator避免空指针异常?
    PHP8如何通过Nullsafe Operator避免空指针异常?摘要:Nullsafe Operator是PHP8版本引入的新特性之一,它提供了一种简洁而有效的方式来处理空指针异常。本文将详细介绍Nullsafe Operator的用法,...
    99+
    2023-10-22
    PHP Nullsafe Operator 空指针异常避免
  • 通过反射器指针设置map1和map2的值
    php小编柚子在这里为大家介绍一种使用反射器指针的方法来设置map1和map2的值。通过反射器指针,我们可以方便地访问和修改对象的属性和方法,实现对map1和map2的值的动态设置。这...
    99+
    2024-02-09
  • 使用指针参数是否能修改调用函数中的值
    指针参数允许函数修改调用函数中的值:创建指针变量,它存储要修改的变量的地址。将指针参数声明为函数声明中的参数。在调用函数时,将变量的地址作为参数传递。在函数内部,使用解引用运算符 (*)...
    99+
    2024-04-19
    函数参数 关键字:指针
  • jquery怎么通过id修改css
    这篇文章给大家分享的是有关jquery怎么通过id修改css的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在jquery中,可以使用“[att^=元...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作