go语言的指针数组与数组指针

go语言的指针数组与数组指针

package main

import "fmt"

/**
Author: xym
Date: 2021/4/21 22:17
Project: Go_Learning
Description:
*/

//三个操作符的优先级:() > [] > *

func main() {
	a1 := [5]int{1, 2, 3, 4, 5}

	//指针数组:[n]*int 表示数组里每个元素都是 指针类型
	var p [5]*int
	for i := range a1 {
		p[i] = &a1[i]	//加&的原因是p中元素已经设定为指针类型,所以从a1中取出的元素也要变为指针类型
	}
	for j, k := range p {
		fmt.Printf("索引:%d, 值:%d,内存地址:%d\n", j, *k, k)
	}
	fmt.Println()
	/*也可以以这种形式输出
	for j := range p {
		fmt.Printf("索引:%d, 值:%d,内存地址:%d\n", j, *p[j], p[j])
	}
	*/
	/*
		结果:(可见每个元素的内存地址都不相同)
			索引:0, 值:1,内存地址:824633771136
			索引:1, 值:2,内存地址:824633771144
			索引:2, 值:3,内存地址:824633771152
			索引:3, 值:4,内存地址:824633771160
			索引:4, 值:5,内存地址:824633771168
	*/

	//-------------------------------------------------------------------------------
	//数组指针:*[n]int 表示一个指向数组的指针,里面的元素是int型
	var q *[5]int
	/*
		由后面可知每个元素的地址都一样,所以可以直接把这个数组的地址赋值给另一个数组,
		而不需要像指针数组每一个元素都要单独赋值
	*/
	q = &a1
	for j, k := range q {
		fmt.Printf("索引:%d, 值:%d,内存地址:%d\n", j, (*q)[j], &k)
	}
	/*
		结果:(可见每个元素的内存地址是一样的)
			索引:0, 值:1,内存地址:824634425432
			索引:1, 值:2,内存地址:824634425432
			索引:2, 值:3,内存地址:824634425432
			索引:3, 值:4,内存地址:824634425432
			索引:4, 值:5,内存地址:824634425432
	*/
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

素履、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值