当前位置: 首页 > news >正文

Go 1.4操作符指针理解

对于初学者来说操作符指针类型、指针、取地址容易混淆,多练就好了。

只需要记住两个符号:&(取内存地址)和*(解引用)。

定义和使用:你可以使用 & 操作符获取一个变量的内存地址,使用 * 操作符通过指针来访问该地址指向的变量值。

指针==指向的内存地址

1. & 取地址符(操作符)

& 是取地址符号,它用于获取一个变量的内存地址,也就是获取一个指向该变量的指针。

场景:

当你需要将某个变量的指针传递给另一个函数或在程序中需要引用该变量而不是复制它的值时,使用 &

package mainimport "fmt"func main() {x := 10p := &x // p 是指向 x 的指针fmt.Println("x 的值:", x)fmt.Println("p 保存的地址:", p)fmt.Println("通过 p 访问 x 的值:", *p)
}

2. 指针的特点

  • 可以存储某个变量的内存地址。
  • 可以通过指针修改变量的值。
  • 指针可以是 nil,即它不指向任何变量。

3. * p操作符

* 是解引用符号,用于通过指针访问指向的变量的值。它可以用来获取指针指向的内存地址处存储的数据。

当有一个指针,想要访问或修改指针指向的变量的值时,使用 *

package mainimport "fmt"func main() {var x int = 10   // 声明一个变量 x,值为 10var p *int       // 声明一个指向 int 类型的指针 pp = &x           // 使用取地址符 & 获取 x 的内存地址,并赋值给 pfmt.Println("x 的值:", x)          // 输出 x 的值,10fmt.Println("p 存储的地址:", p)    // 输出 p 存储的地址fmt.Println("通过 p 获取的值:", *p) // 通过指针 p 获取指向的值(即 x 的值)// 通过指针修改 x 的值*p = 20fmt.Println("修改后的 x 的值:", x) // 输出修改后的 x 的值,20
}
  • &x 表示取变量 x 的内存地址,将该地址赋给 p
  • *p 表示通过指针 p 来访问它指向的变量的值。在这里,*p 的值就是 x 的值。
  • *p = 20 表示通过指针修改 x 的值。

package mainimport "fmt"type Person struct {Name stringAge  int
}func main() {var p *Person  // 声明一个指向 Person 类型的指针 p, 初始值为 nilfmt.Println(p)  // 打印 p,结果是 nil// 创建一个 Person 类型的变量p1 := Person{Name: "John", Age: 30}// 获取 p1 的内存地址,并赋值给指针 pp = &p1fmt.Println(p)    // 打印 p,结果是 p1 的内存地址fmt.Println(*p)   // 解引用指针 p,打印 p1 的值
}

4.疑惑

4.1、指针类型
package mainimport "fmt"type Person struct {Name stringAge  int
}func main() {p1 := Person{"John", 30}  // 创建一个 Person 类型的变量 p1var p *Person              // 声明一个指向 Person 类型的指针 pp = &p1                     // 将 p1 的内存地址赋给 p,即 p 指向 p1fmt.Println(p)              // 输出指针 p,显示的是 p1 的内存地址fmt.Println(*p)             // 通过 *p 解引用指针,访问 p1 的内容fmt.Println(p.Name)         // 直接访问指针 p 所指向的结构体字段 Name
}

简单来说:

Person 是一个数据类型(比如一个结构体)。

  • *Person 是一个指针类型,它指向的是 Person 类型的变量。
  • p *Person 声明的是一个指针变量 p,它保存的是一个指向 Person 类型数据的内存地址。

解释:

1. p *Person:p 是一个指向 Person 类型的指针变量,意味着 p 保存的就是 Person 类型变量的内存地址。

2. p = &p1:我们将 p1 的内存地址赋给 p,也就是让 p 指向 p1。

3. *p:通过解引用 *p,我们可以访问指针 p 所指向的 Person 结构体的值。

4. p.Name:直接通过指针 p 访问 p1 的 Name 字段。


 

总结:

• p *Person 声明了一个指向 Person 类型的指针变量 p。

• p 保存的是 Person 类型变量的内存地址,*p 允许你通过指针访问和操作该变量的值。

如果还感到混乱,可以把指针理解成指向内存中某个位置的 “导航”。通过 & 获取指针,即获取 “导航”;通过 * 访问指针指向的实际数据,就是 “跟随导航去查看位置”。

相关文章:

Go 1.4操作符指针理解

对于初学者来说操作符指针类型、指针、取地址容易混淆,多练就好了。 只需要记住两个符号:&(取内存地址)和*(解引用)。 定义和使用:你可以使用 & 操作符获取一个变量的内存地址&#x…...

MATLAB 生成脉冲序列 pulstran函数使用详解

MATLAB 生成脉冲序列 pulstran函数使用详解 目录 前言 一、参数说明 二、示例一 三、示例二 总结 前言 MATLAB中的pulstran函数用于生成脉冲序列,支持连续或离散脉冲。该函数通过将原型脉冲延迟并相加,生成脉冲序列,适用于信号处理和系统…...

Windows 安装 DeepSeek 教程和open webui 图形化部署(非docker)

Windows 安装 Ollama : 步骤 1:下载并安装 Ollama 官网:奥拉马 点击下载 选择windows版本。 双击安装包 点击【Install】(注意:安装包是直接安装在C盘的,并不支持更改路径,因此C盘的空间必须要至少大于5…...

本地部署DeepSeek-R1(Ollama+Docker+Dify知识库)

安装Ollama 打开 Ollama官网 https://ollama.com/下载安装 部署DeepSeek R1模型 下载模型,自行选择1.5b、7b、8b、14b、32b、671b在终端输入: ollama pull deepseek-r1:1.5b运行模型 ollama run deepseek-r1:1.5b下载嵌入模型,嵌入模型…...

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本,它提供了运行基于 Visual C++ 编写的应用程序所需的库文件。许多 Windows 应用程序都依赖这些库来正常运行,特别是使用 Visual Studio 编译的程序。 用途和重要性: 运行时库:vcredist_x64.exe 安装…...

机器学习:多项式回归

概念 多项式回归是一种统计学习方法,用于建模自变量x和因变量y之间的非线性关系。它通过在原始特征空间中引入更高阶的多项式特征来扩展线性回归模型的能力。具体来说,假设我们有一个简单的线性回归模型:y = w₁x + b,其中w₁是权重系数,b是偏置项。而多项式回归则通过增…...

【设计模式】【行为型模式】模板方法模式(Template Method)

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 📫 欢迎V: flzjcsg2,我们共同讨论Java深渊的奥秘 &#x1f…...

牛客周赛Round 80 —— 举手赢棋 python 补题 + 题解

文章目录 前言举手赢棋easy举手赢棋hard 前言 紧跟时事的两道算法题 牛客周赛 Round 80 举手赢棋easy 题目描述 本题为《举手赢棋hard》的简单版本,两题的唯一区别在于对举手次数的限制不同,在本题中,小红有1次举手的机会。 小红获得了参加…...

Ubuntu 如何安装Snipaste截图软件

在Ubuntu上安装Snipaste-2.10.5-x86_64.AppImage的步骤如下: 1. 下载Snipaste AppImage 首先,从Snipaste的官方网站或GitHub Releases页面下载Snipaste-2.10.5-x86_64.AppImage文件。 2. 赋予执行权限 下载完成后,打开终端并导航到文件所在…...

第四篇:放大电路的“子弹时间”——车载音频与传感器信号链设计

核心隐喻:Neo的子弹时间与信号捕捉艺术 如同《黑客帝国》中Neo以超感知力捕捉子弹轨迹,车载放大电路正是新能源汽车感知系统的“超能力核心”。在嘈杂的电磁战场中(引擎噪音、高压系统干扰、多设备信号串扰),它需要精…...

Tcp_socket

Tcp不保证报文完整性(面向字节流) 所以我们需要在应用层指定协议,确保报文完整性 // {json} -> len\r\n{json}\r\n bool Encode(std::string &message) {if(message.size() 0) return false;std::string package std::to_string(m…...

Transformer 详解:了解 GPT、BERT 和 T5 背后的模型

目录 什么是 Transformer? Transformer如何工作? Transformer 为何有用? 常见问题解答:机器学习中的 Transformer 在技​​术领域,突破通常来自于修复损坏的东西。制造第一架飞机的人研究过鸟类。莱特兄弟观察了秃鹫如何在气流中保持平衡,意识到稳定性比动力更重要。…...

攻防世界32 very_easy_sql【SSRF/SQL时间盲注】

不太会,以后慢慢看 被骗了,看见very_easy就点进来了,结果所有sql能试的全试了一点用都没有 打开源代码发现有个use.php 好家伙,这是真的在考sql吗...... 制作gopher协议的脚本: import urllib.parsehost "12…...

Datawhale 组队学习 Ollama教程 task1

一、Ollama 简介 比喻:Ollama 就像是一个“魔法箱子”,里面装满了各种大型语言模型(LLM)。你不需要懂复杂的魔法咒语(配置),只需要轻轻一按(一条命令),就能让…...

什么是科技查新报告

科技查新报告虽然对于我们来说耳熟能详但是大家可能还是一知半解, 那么究竟什么是科技查新报告呢? 那么接下来我将于三个方面为大家讲解: 1.什么是科技查新报告 2.科技查新报告什么样子 3.如何获取科技查新报告 一、什么是科技查新报告…...

学习笔记十九:K8S生成pod过程

K8S生成pod过程 流程图具体生成过程用户提交 Pod 定义API Server 处理请求调度器分配节点(Scheduling)目标节点上的 Pod 创建网络配置状态上报与监控控制器管理(Controller Manager)就绪与服务发现 关键错误场景高级特性 流程图 具…...

分享如何通过Mq、Redis、XxlJob实现算法任务的异步解耦调度

一、背景 1.1 产品简介 基于大模型塔斯,整合传统的多项能力(NLP、OCR、CV等),构建以场景为中心的新型智能文档平台。通过文档审阅,实现结构化、半结构化和非结构化文档的信息获取、处理及审核,同时基于大…...

C/C++算法竞赛学习书籍

文章目录 C Primer Plus:中文版(第六版)C Primer 中文版(第 5 版)算法竞赛进阶指南 (李煜东)挑战程序设计竞赛 (秋叶拓哉 岩田阳一 北川宜稔)算法竞赛入门经典(第2版) (刘汝佳)啊哈算法 (啊哈磊…...

JVM(Java 虚拟机)

Java语言的解释性和编译性(通过JVM 的执行引擎) Java 代码(.java 文件)要先使用 javac 编译器编译为 .class 文件(字节码),紧接着再通过JVM 的执行引擎(Execution Engine&#xff09…...

组件库选择:ElementUI 还是 Ant Design

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

【论文翻译】DeepSeek-V3论文翻译——DeepSeek-V3 Technical Report——第一部分:引言与模型架构

论文原文链接:DeepSeek-V3/DeepSeek_V3.pdf at main deepseek-ai/DeepSeek-V3 GitHub 特别声明,本文不做任何商业用途,仅作为个人学习相关论文的翻译记录。本文对原文内容直译,一切以论文原文内容为准,对原文作者表示…...

渗透利器:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)

Burp Suite 联动 XRAY 图形化工具.(主动扫描被动扫描) Burp Suite 和 Xray 联合使用,能够将 Burp 的强大流量拦截与修改功能,与 Xray 的高效漏洞检测能力相结合,实现更全面、高效的网络安全测试,同时提升漏…...

【Redis】redis 存储的列表如何分页和检索

博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

医疗影响分割 | 使用 Swin UNETR 训练自己的数据集(3D医疗影像分割教程)

<Swin UNETR: Swin Transformers for Semantic Segmentation of Brain Tumors in MRI Images> 代码地址:unetr 论文地址:https://arxiv.org/pdf/2201.01266 一、下载代码 在Github上下载代码,然后进入SWINUNETR,前两个是针对两个数据集(BRATS21、BTCV)的操作,这里…...

前端学习路径

&#x1f680; 前言 本文不仅包含学习路径&#xff0c;还整合了 300小时精选资源 和 开发者必备工具链&#xff0c;助你构建完整知识体系&#xff01; &#x1f527; 开发工具全家桶 工具类型推荐工具使用场景代码编辑器VS Code 插件市场主力开发工具&#xff0c;必装插件&am…...

Day84:数据可视化

数据可视化是数据分析的重要组成部分,它能直观地展现数据规律,使复杂数据变得易懂。Python 提供了多个数据可视化库,其中最常用的是 Matplotlib 和 Seaborn。今天,我们将学习如何使用这些工具绘制折线图、柱状图、散点图等。 1. 安装和导入库 如果你的 Python 没有安装 Ma…...

iOS主要知识点梳理回顾-3-运行时消息机制

运行时&#xff08;runtime&#xff09; 运行时是OC的重要特性&#xff0c;也是OC动态性的根本支撑。动态&#xff0c;如果利用好了&#xff0c;扩展性就很强。当然了&#xff0c;OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比&#xff0c;OC动态性很…...

JSON是什么

JSON 简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。它基于 JavaScript 的一个子集&#xff0c;但独立于编程语言&#xff0c;广泛用于 Web 应用中的数据交换。…...

three-tile-vue 开发测试

three-tile 在 github 上开源半年多&#xff0c;已有140余颗星&#xff0c;目前性能和功能已能满足生产环境使用&#xff0c;是替代cesium的一种轻量级解决方案。让我没想到的是第一个商用的竟然是老外。 最近&#xff0c;测试了three-tile在vue中的使用&#xff0c;效果还可以…...

Acwing-基础算法课笔记之基础算法(差分)

Acwing-基础算法课笔记之基础算法&#xff08;差分&#xff09; 一、一维差分1、差分的概念2、差分思想 二、二维差分操作流程 一、一维差分 1、差分的概念 对于一个给定的序列a&#xff0c;它的差分序列b定义为&#xff1a; b [ 1 ] a [ 1 ] b[1]a[1] b[1]a[1]&#xff0c…...

c语言判断一个文件的文件格式

在 Linux 下使用 C 语言判断一个文件的文件格式&#xff0c;通常需要检查文件的头信息&#xff08;也称为“幻数”或“魔数”&#xff09;。不同的文件格式在文件头有特定的字节序列&#xff0c;这些字节序列可以用来确定文件的类型。以下是一个基本的示例&#xff0c;展示了如…...

e2studio开发RA2E1(12)----打印函数(printf、 sprintf)的实现

e2studio开发RA2E1.12--打印函数printf、 sprintf的实现 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uar…...

C++编译期优化 ---分支预计__builtin_expect

在编写程序逻辑的时候&#xff0c;使用了大量的if-else 分支&#xff0c;为了程序尽可能的高效运行&#xff0c;会考虑把可能性更高的条件写在前面&#xff0c;这样程序的平均运行时间会更短。 gcc提供了一种方式&#xff0c;可以让编译器自行优化 __builtin_expect(expr,bool)…...

ASP.NET Core SignalR的协议协商

SignalR支持多种服务器推送方式&#xff1a;Websocket、Server-Sent Events、长轮询。默认按顺序尝试。F12查看协商过程。websocket和HTTP是不同的协议&#xff0c;为什么能用同一个端口。在【开发人员工具】的【网络】页签中看WebSocket通信过程。 协议协商问题 集群中协议协…...

问卷数据分析|SPSS实操之独立样本T检验

适用条件&#xff1a; 检验分类变量和定量变量之间的差异 分类变量只能为二分类变量&#xff0c;如性别 1.选择分析--比较平均值--独立样本检验 2. 在下方选择性别&#xff08;分类变量&#xff09; 3. 点击定义组&#xff0c;组1输入1&#xff0c;组2输入2 4.在上方填入定量…...

Vue事件处理 - 按键修饰符

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 按键修饰符 目录 按键修饰符 常见修饰符 绑定按键事件 绑定事件 优化回车修饰符 多个按键 直接绑定数字 总结 按键修饰符 常见修饰符 .esc .up .down .left .right . space .ctrl .shift .delete 绑定…...

PostgreSQL错误: 编码“UTF8“的字符0x0xe9 0x94 0x99在编码“WIN1252“没有相对应值

错误介绍 今天遇到一个错误&#xff0c;记录一下 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"WIN1252"的字符0x0x81在编码"UTF8"没有相对应值 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"UTF8"的字符0x0xe9 0x94 0x99在编码&quo…...

使用OBS推流,大华摄像头 srs服务器播放

说明&#xff1a; ffmpeg可以推流&#xff0c;但是是命令行方式不太友好&#xff0c;还可以使用主流的OBS开源推流软件&#xff0c;可从官网Open Broadcaster Software | OBS 下载最新版本&#xff0c;目前很多网络主播都是用它做直播。该软件支持本地视频文件以及摄像头推流。…...

Ollama部署DeepSeek(windows or ubuntu)

Ollama(官网是https://ollama.com/)是一个专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计的开源框架。它简化了大型语言模型的部署过程&#xff0c;提供了轻量级与可扩展的架构&#xff0c;使得研究人员、开发人员和爱好者能够更加方便地在本地…...

2、k8s 二进制安装(详细)

k8s 二进制安装 IP规划初始化部署 etcd 集群在 etcd01 节点上操作准备cfssl证书生成工具&#xff0c;加权生成etcd证书上传etcd软件包启动 etcd 服务 部署 Master 组件部署 Worker Node 组件node 节点安装 docker部署组件 部署 CNI 网络组件部署 flannel简介部署 部署 Calico简…...

02、QLExpress从入门到放弃,相关API和文档

QLExpress从入门到放弃,相关API和文档 一、属性开关 public class ExpressRunner {private boolean isTrace;private boolean isShortCircuit;private boolean isPrecise; }/*** 是否需要高精度计算*/ private boolean isPrecise false;高精度计算在会计财务中非常重要&…...

在 Visual Studio Code 与微信开发者工具中调试使用 emscripten 基于 C 生成的 WASM 代码

最近在尝试将一些 C/C、Lua 项目挪到 Web 上跑, 接触到了 emscripten. 这里会介绍下在 Visual Studio Code 与微信开发者工具中调试使用 emscripten 基于 C 生成的 WASM 代码 (WebAssembly) 的一些方法. Emscripten 与 WebAssebmly WebAssembly 是一种新的编码方式, 可以在现代…...

计算机毕业设计——Springboot的社区维修平台旅游管理

&#x1f4d8; 博主小档案&#xff1a; 花花&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 花花在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于java、python等技术。近年来&#xff0c;花花更…...

Oracle常见语法

一、求交集 SELECT column1, column2 FROM table1 INTERSECT SELECT column1, column2 FROM table2;INTERSECT 操作符是 Oracle 和一些其他数据库&#xff08;如 PostgreSQL 和 SQL Server&#xff09;特有的集合操作符&#xff0c;在 MySQL 中并不直接支持。MYSQL同效果代码&a…...

[2025年最新]2024.3版本idea无法安装插件问题解决

背景 随着大模型的持续发展&#xff0c;特别年前年后deepseek的优异表现&#xff0c;编程过程中&#xff0c;需要解决ai来辅助编程&#xff0c;因此需要安装一些大模型插件 问题描述 在线安装插件的时候会遇到以下问题&#xff1a; 1.数据一直在加载&#xff0c;加载的很满 2.点…...

说一下 jvm 有哪些垃圾回收器?

JVM 垃圾回收器对比表 垃圾回收器类型工作方式回收方式停顿时间适用场景优点缺点常见问题常见配置Serial GC串行单线程&#xff0c;STW年轻代&#xff1a;复制算法 老年代&#xff1a;标记-整理长小内存、单核CPU&#xff0c;如桌面应用或嵌入式设备简单高效&#xff0c;适用于…...

【Linux】--- 进程间的通信

【Linux】--- 进程间的通信 一、进程间通信的介绍1、进程间通信的概念2、进程间通信的目的3、 进程间通信的本质/前提4、进程间通信的分类 二、管道1、什么是管道2、匿名管道&#xff08;1&#xff09;匿名管道的原理&#xff08;2&#xff09;pipe函数&#xff08;3&#xff0…...

GlusterFS 深度洞察:从架构原理到案例实践的全面解读(上)

文章目录 一.GlusterFS简介二.GlusterFS原理架构三.适用场景四.Glusterfs与其他存储产品对比五.部署GlusterFS集群六. 使用heketi将glusterfs接入k8s作为后端存储 一.GlusterFS简介 GlusterFS是一个免费的开源分布式文件系统&#xff0c;具有无中心节点、堆栈式设计、全局统一…...

实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)

如上图&#xff0c;我的百度网盘已登录设备列表&#xff0c;有一个手机&#xff0c;2个windows客户端。手机设备有型号、最后登录时间、IP等。windows客户端信息有最后登录时间、操作系统类型、IP地址等。这些具体是如何实现的&#xff1f;下面分别给出android APP中采集手机信…...

C#综合知识点面试集锦

在.NET Core 框架的面试中,可能会涉及基础概念、核心组件、依赖注入、性能优化等多方面的知识点,以下为你详细介绍: 基础概念 .NET Core 概述 定义与特点:解释 .NET Core 是一个跨平台、开源、模块化且高性能的通用开发框架,能在 Windows、Linux、macOS 等操作系统上运行…...