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

wordpress个人网站模板天津响应式网站建设制作

wordpress个人网站模板,天津响应式网站建设制作,东莞手机网站站定制开发,设计网页的8个步骤在计算机内存中#xff0c;每个变量都有一个唯一的地址#xff0c;指针就是用来保存这个地址的变量。通过指针#xff0c;我们可以间接地访问和修改存储在该地址处的数据。今天我们来聊一聊Java和Go指针#xff0c;预告一下#xff0c;我们需要借助C语言做一些小小的比较。…在计算机内存中每个变量都有一个唯一的地址指针就是用来保存这个地址的变量。通过指针我们可以间接地访问和修改存储在该地址处的数据。今天我们来聊一聊Java和Go指针预告一下我们需要借助C语言做一些小小的比较。 Java 在Java中不存在直接的指针概念而是通过引用来访问对象。Java中的对象是通过引用来操作的这些引用本质上是对对象的引用而不是指向内存地址的指针。Java的引用是一种高级抽象它隐藏了底层内存管理的细节开发者不需要关心对象的内存分配和释放。Java中的引用可以被认为是一种安全的指针它提供了更高的抽象级别可以减少内存管理错误的发生。其实大家第一门编程语言应该就是大一学习的C语言编程吧。当时学习指针的时候很懵尤其是各种指针运算。后来学Java的对象以及引用再回来看就很好理解。 CStudent *student (Student*)malloc(sizeof(Student));JavaStudent student new Student();他们的本质是一样的都是指向堆空间的某一块地址。之后再回去写C语言就越写越顺每次创建变量之前都问自己一句在栈里还是堆里 然后决定要不要用指针。 话说回来sun.misc.Unsafe类提供了一种机制来进行一些底层的、不安全的操作包括直接操作内存和执行不受限制的任意指针算术运算等。 sun.misc.Unsafe类并不是 Java 标准 API 的一部分因此它并不受到 Java 平台的正式支持并且可能在未来的 Java 版本中被移除或更改。它主要被用来实现 Java 核心类库和一些 Java 虚拟机的实现。 通过sun.misc.Unsafe类你可以直接进行一些底层的内存操作比如 分配内存释放内存修改内存中的值进行指针算术运算等 使用sun.misc.Unsafe类需要谨慎因为它涉及到底层的内存操作可能会导致不稳定性和不可预测的结果。此外由于它不是 Java 标准 API 的一部分因此在不同的 Java 实现中它的行为可能会有所不同。 在 Java 9 中sun.misc.Unsafe类的一些方法被标记为不安全并且在一些场景下会抛出 java.lang.UnsupportedOperationException 异常这是为了增强 Java 应用程序的安全性。 总的来说除非你对 Java 的内存模型和底层运行机制非常了解并且对使用 sun.misc.Unsafe 类的风险有所认识并且确实需要进行底层的内存操作否则不建议使用 sun.misc.Unsafe 类。Java部分就到此结束毕竟不是重点。 Go 中的指针 Go语言支持指针但是和C语言中的指针还是有些不同。在Go中指针是一种数据类型它指向了一个内存地址允许你直接访问内存中的数据。与C语言不同的是Go语言的指针是类型安全的不允许进行指针运算从而减少了一些常见的指针错误。 在Go中你可以通过使用操作符来声明指针变量使用操作符来获取变量的地址使用操作符来获取指针指向的值。 依稀记得当时学习C语言的时候老师引出的指针的第一个例子将两个int数传入一个方法希望这两个int互换数值。这里我用Go来写 package mainimport fmt// 定义一个交换函数 func swap(x, y int) {var i int xx yy i }func main() {// 定义两个整数变量a, b : 5, 10fmt.Println(Before swapping:)fmt.Println(a , a)fmt.Println(b , b)// 调用交换函数并接收返回值swap(a, b)fmt.Println(After swapping:)fmt.Println(a , a)fmt.Println(b , b) }结果显而易见我们失败了。然后老师开始长篇大论的解释然后我就睡着了。其实现在回来再想想很简单x和y的变量在main的栈帧里面调用swap方法无非就是创建新的栈帧并把xy的数值复制一边传递出去。抓捕周树人和我鲁迅有什么关系 那正确写法就是搞一个指向栈内存的指针。 package mainimport fmt// 定义一个交换函数 func swap(x, y *int) {temp : *x*x *y*y temp }func main() {// 定义两个整数变量a, b : 5, 10fmt.Println(Before swapping:)fmt.Println(a , a)fmt.Println(b , b)// 调用交换函数swap(a, b)fmt.Println(After swapping:)fmt.Println(a , a)fmt.Println(b , b) }接下来我们再看看数组和指针碰到一起会发生什么 指针和数组 指针指向数组中的某一个元素 var arr [5]int var ptr *int ptr arr[0] // 将指针指向数组的第一个元素指针指向数组整体 // 声明一个数组 var arr [5]int // 声明一个指向数组的指针 var ptr *[5]int // 将指针指向数组 ptr arr这里要注意类型匹配我们之前说过长度也是类型的一部分[5]int和[7]int是不一样的。[5]int要配合*[5]int 眼神要好 var ptrArr *[3]int //指向一个数组 var ptrArr [3]*int //每个元素指向一个数传递数组 之前我们说过在方法间传递数组其实是复制整个数组传递过去相当于寻觅另外一个地方盖一座一模一样的房子。如果我们传递指向数组的指针函数将能够修改原始数组的值。 func modifyArray(arr *[5]int) {// 修改数组的值(*arr)[0] 100 }func main() {var arr [5]intmodifyArray(arr)fmt.Println(arr) // 输出 [100 0 0 0 0] } 指针和切片 之前我们已经学过切片其实就是对数组进行包装内部通过指针对数组进行操作。那么当切片和指针一起使用时可以实现更灵活和高效的数据操作比如动态地管理内存和访问数组的部分元素二级指针嘛玩C的都懂。以下是一些示例演示了切片和指针的结合使用 package mainimport fmtfunc main() {// 创建一个切片slice : []int{1, 2, 3, 4, 5}// 创建一个指向切片的指针var ptr *[]intptr slice// 修改切片的值(*ptr)[0] 100(*ptr)[1] 200// 打印修改后的切片fmt.Println(*ptr) // 输出: [100 200 3 4 5] } 个人觉得切片指针反而比数组用起来更轻松。map也一样道理 package mainimport fmtfunc modifyMap(m *map[string]int) {// 向 map 中添加新的键值对(*m)[d] 4(*m)[e] 5// 修改已有键的值(*m)[a] 100 }func main() {// 创建一个 mapmyMap : map[string]int{a: 1,b: 2,c: 3,}// 创建指向 map 的指针ptr : myMap// 修改 map 内容modifyMap(ptr)// 打印修改后的 mapfmt.Println(*ptr) }指针和结构体 在 Go 语言中指向结构体的指针是一种非常常见的用法基本和C语言一样。结构体是一种用户自定义的复合数据类型它可以包含多个不同类型的字段而指向结构体的指针则允许我们直接访问结构体的字段并且可以在函数之间共享结构体的实例而不需要进行复制。以下是指向结构体的指针如何使用的详细说明 创建结构体指针 // 定义结构体 type Person struct {Name stringAge int }func main() {// 创建结构体的指针var p *Personp Person{John, 30}// 或者使用 new() 函数创建结构体的指针p new(Person)p.Name Alicep.Age 25 }可以理解这里的new就相当于(*Person)malloc(sizeof(Person)); 操作结构体字段 访问结构体字段 fmt.Println((*p).Name) // 打印结构体字段 Name fmt.Println(p.Age) // 也可以直接使用 p.Age 访问修改结构体字段 p.Name Bob // 直接赋值修改结构体字段 p.Age 40传递结构体指针给函数 func modifyPerson(p *Person) {if p ! nil {p.Age 50} }modifyPerson(p) // 调用函数修改结构体的字段值总的来说指向结构体的指针在 Go 中是非常常见的用法它允许我们在函数间共享结构体的实例并且可以在需要时直接访问和修改结构体的字段。使用指向结构体的指针可以避免结构体的复制提高程序的性能和效率。 总结 Java中的指针是被隐藏的程序员无法直接操作内存地址而Go中的指针是一等公民允许直接操作内存地址。本文仅仅介绍了指针操作的冰山一角之后我们会继续介绍指针在面向对象编程中的应用。
http://www.zqtcl.cn/news/686288/

相关文章:

  • 做网站语言知乎长春财经学院学费多少
  • 大丰有做网站的电子商城网站开发要多少钱
  • 南京建设网站制作手机怎么制作网页
  • 杭州pc网站建设方案网站建设要准备的内容
  • 壶关网站建设中国专利申请网官网
  • 具体的网站建设方案网页程序开发采购
  • 泉州 网站建设苏州网站外包
  • 网站做404页面怎么做网站开发过程的基本环节
  • 做网站是前端还是后端小程序网站模板
  • 学校网站建设与维护建设银行官网电话
  • dedecms网站地图修改软件开发公司规章制度
  • 大型旅游网站骏驰网站开发
  • 有心学做网站两学一做知识竞赛试题网站
  • 西宁圆井模板我自己做的网站怎么做网站能快速赚钱
  • 根据网站集约化建设的要求直流分公司四川建设部网站
  • 网站优化平台有哪些遵义网站开发的公司有哪些
  • 推荐一下网站谢谢微盟微商城怎么样
  • 网站建设的技术指标网站做好第二年要多少钱
  • 工业设计东莞网站建设WordPress网络功能
  • 网站pv多少可以企业网站托管常见问题
  • 深圳有哪些网站建设沈阳做机床的公司网站
  • 2022年网站能用的wordpress 客户端使用
  • 社交网站建设内容如何制作橡皮泥 简单
  • 简述网站的制作流程wordpress定制分类
  • 如何自建购物网站wordpress文章编辑插件
  • 网站策划机构建筑网站、
  • 邹平做网站的公司标志设计图片大全简单
  • 广东省建设厅官方网站多少钱如何在虚拟机里面做网站
  • 上海免费网站建设模板做网站页面的软件
  • 做折页的网站个人网站有哪些