首页 > 其他分享 >Go语言-指针

Go语言-指针

时间:2023-10-30 22:22:27浏览次数:23  
标签:arr 语言 int fmt 数组 Go ptr 指针

指针

  • 指针是存储另一个变量内存地址的变量
  • 取址符号:&
  • 获取地址内容 : *
	//1、定义一个整数a
	a := 10
	fmt.Println(a, &a)   //10 0xc0000a6058
	//2、将a内存地址赋值b
	b := &a              
	fmt.Println(b, &b, *b)//*b:指向a的值    0xc0000a6058 0xc0000ca020 10
	//3、将b的值更改
	*b = 20
	fmt.Println(a, &a)      //20 0xc0000a6058

	//4.定义一个指针变量
	var p *int
	p = &a
	*p = 20;    //为指针变量指向的地址赋值

	//5.嵌套指针
	var ptr **int         //可以将*int看作一个整体
	ptr = &p
	fmt.Printf("ptr存储的p的地址:%p\t,ptr指向p的值:%d\n", ptr, *ptr) //ptr存储的p的地址:0xc0000ca020   ,ptr指向p的值:824634400856
	fmt.Printf("ptr自己的地址:%p\t,ptr取p变量的值为:%d\n", &ptr, **ptr)//ptr自己的地址:0xc0000ca028      ,ptr取p变量的值为:20

(1)指针数组与数组指针

  • 数组指针:一个指向数组的指针
  • 指针数组:存储数据类型为指针的数组

数组指针

	//1、定义一个数组
	arr := [4]int{1, 2, 3, 4}
	fmt.Printf("arr的内存地址:%p\n", &arr)   //arr的内存地址:0xc000012200

	//2、定义一个指针,指向数组
	var p *[4]int
	p = &arr
	fmt.Printf("p-->arr的内存地址:%p\n", p) //p-->arr的内存地址:0xc000012200
	fmt.Printf("p-->arr的值:%d\n", *p)   //p-->arr的值:[1 2 3 4]
	fmt.Printf("p自己的地址:%p\n", &p)    //p自己的地址:0xc00000a030

	//3、将数组的第一、二个元素改变
	(*p)[0] = 100
	//也可以简写
	p[1] = 200
	fmt.Printf("p-->arr的值:%d\n", *p)   //p-->arr的值:[100 200 3 4]

指针数组

	a := 1
	b := 2
	c := 3
	d := 4
	arr2 := [4]*int{&a, &b, &c, &d}   //定义一个指针数组
	fmt.Println(arr2)   //[0xc00001c0a8 0xc00001c0d0 0xc00001c0d8 0xc00001c0e0]
	fmt.Println(*arr2[0]) //1
	*arr2[0] = 100
	fmt.Println(*arr2[0])  //100

(2)指针函数

指针函数:返回值为指针的函数

func f1() *[4]int {
	arr1 := [4]int{1, 2, 3, 4}
	return &arr1

}

(3)指针作为参数

func f2(ptr2 *int) {
   fmt.Println("ptr2:", ptr2)
   fmt.Println("*ptr2:", *ptr2)
   *ptr2 = 100
}

标签:arr,语言,int,fmt,数组,Go,ptr,指针
From: https://www.cnblogs.com/sillyfox/p/17799028.html

相关文章

  • 打印空心金字塔_Golang实现
    *******......
  • 无涯教程-C语言 - 输入(Input)&输出(Output)
     C编程提供了一组内置函数来读取给定的输入,并根据需要将其输入到程序中。getchar()和putchar()函数intgetchar(void)  - 函数从屏幕读取下一个可用字符,并将其作为整数返回。intputchar(intc)  - 函数将传递的字符放在屏幕上,并返回相同的字符。#include<stdi......
  • 实验3 C语言函数应用编程
    实验任务11#include<stdio.h>2#include<math.h>3#include<stdlib.h>4#include<time.h>5#include<windows.h>6#defineN807voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidpr......
  • 无涯教程-C语言 - 结构(Struct)
    数组允许定义变量的类型,这些变量可以容纳相同种类的多个数据项。同样,结构是C中可用的另一种用户定义的数据类型,它允许组合不同种类的数据项。结构Struct用于表示记录,假设您想定义图书馆中的书籍,您可能需要定义跟踪有关每本书的以下属性-标题title作者author主题subject图......
  • C语言的system("pause")是什么
    ......
  • 实验3 C语言函数应用编程
    一、实验目的能正确使用c语法规则定义、声明、调用函数能正确编写递归函数针对具体问题场景,能合理抽象出独立的功能模块,正确定义函数并使用,使得代码更具可读性、可维护性针对具体问题场景,能正确、合理使用全局变量和局部static变量,解决实际问题二、实验准备函数定义、声......
  • 无涯教程-C语言 - 字符串(String)
    字符串实际上是由null字符'\0'终止的一维字符数组,因此,以零结尾的字符串包含由字符串组成的字符,后跟null。以下声明和初始化创建一个由单词"Hello"组成的字符串。chargreeting[6]={'H','e','l','l','o','\0'};如果您遵循数组初始化的规则,那么您可以编写以下语句,如下......
  • 实验3_C语言函数应用编程
    1.task_11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidprint_blank_lines(intn)......
  • 浅谈搜索展现层场景化技术-tanGo实践 算子化
    浅谈搜索展现层场景化技术-tanGo实践https://mp.weixin.qq.com/s/nVy9SYRIaaqZWgOHKTMQ4Qintroduction本文为搜索展现层相关技术,主线会先通过介绍搜索阿拉丁的产品形态,让读者初步了解什么是阿拉丁,及相关展现概念。之后会聚焦场景化产品,场景化是搜索构建沉浸式完美体验(重新组合整......
  • 无涯教程-C语言 - 数组(Array)
    数组是一种数据结构,可以存储相同类型的元素的固定大小的顺序集合。所有数组均包含连续的内存位置,最低地址对应于第一个元素,最高地址对应于最后一个元素。声明数组要在C中声明数组,程序员可以指定元素的类型和数组所需的元素数量,如下所示-typearrayName[arraySize];这称为......