go的指针学习

1)指针是什么?

一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址

说白了就是可以先存储内存的地址,在用内存地址找到对应值

2)go中的使用

Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。

Go 语言的取值得地址符是 *,放到一个地址前使用就会返回相应内存对应的值。

package main

import "fmt"

func main() {
	var a int = 10

	fmt.Printf("变量的地址: %x\n", &a)
}

3)指针也可以声明类型

var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮点型 */

4)根据内存地址获取值

package main

import "fmt"

func main() {
	var a int = 2000
	var ip *int /* 声明指针变量 */
	ip = &a     /* 指针变量的存储地址 */
	fmt.Printf("变量的地址: %x\n", &a)
	fmt.Printf("根据地址获取值为: %d\n", *ip) //注意为%d整型
}

5)go的空指针,一个指针变量通常缩写为 ptr。

if(ptr != nil)     /* ptr 不是空指针 */
if(ptr == nil)    /* ptr 是空指针 */

6)指针数组,原理类似

package main

import "fmt"

const MAX int = 3

func main() {
   a := []int{10,100,200}
   var i int
   var ptr [MAX]*int;

   for  i = 0; i < MAX; i++ {
      ptr[i] = &a[i] /* 整数地址赋值给指针数组 */
   }

   for  i = 0; i < MAX; i++ {
      fmt.Printf("a[%d] = %d\n", i,*ptr[i] )
   }
}

  输出结果

a[0] = 10
a[1] = 100
a[2] = 200

  

时间: 2024-11-04 00:08:34

go的指针学习的相关文章

lua指针学习

按照书上的例子,运行了下,lua指针关键就是3个值,指针函数,不变量,控制变量 function iter(a,i) --指针函数    i=i+1    local v=a[i]    if v then        return i,v    endend function isp(a)    --返回指针函数,不变量,控制变量    return iter,a,0end for k,v in isp({1,2,4}) do --控制变量是k,也就是指针函数返回的第1个赋值的变量    p

c 函数及指针学习 10

标准库函数 1算数运算stdlib.h 2随机数stdlib.h 3字符串转化stdlib.h 4数学函数 math.h 5日期和时间 time.h 6信号 signal.h 7打印可变参数列表stdarg.h 8断言 assert.h 抽象数据类型在数据结构中比较仔细 运行时环境没看 来自为知笔记(Wiz)c 函数及指针学习 10,码迷,mamicode.com

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

c 函数及指针学习 6

不完整声明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* 方法一   */ struct tag_a{     struct tag_b *bp;  /* 这里struct tag_b 还没有定义,但编译器可以接受 */     int value; }; struct tag_b{     struct tag_a *ap;     int value; }; typedef struct tag

c 函数及指针学习 5

聚合数据类型 能够同时存储超过一个的单独数据. c语言提供了数组和结构体. 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <math.h> void main() { struct {     int a;     }x,*b; int c[2]={1,2}; x.a=1; b=c; printf("%d \n",b[1]); printf("%d \n",x.

C函数及指针学习3

1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> void main() { char *sa="sdhshdh"; char *sb="cdehhhhsdssssd"; printf("%d , %d \n",strlen(sa),strlen(sb));    if(strlen(sa)-strlen(sb)>=0) {     printf("run 1\n&quo

C和指针 学习笔记-4.函数

参数传递: 参数传递采用按值传递 ADT&黑盒 ADT:abstract data type,抽象数据类型 c可以用于设计与实现抽象数据类型,因为它可以限制函数和数据定义的作用域,这种技巧也称为黑盒设计 user.h #define MAXLEN 3 struct UserClz { char *name; char *phone; char *address; }; typedef struct UserClz User; /* *接函数 *通地名称查找地址 */ char const * l

C和指针 学习笔记-3.数组与指针

数据名代表首地址 指向数组的指针 #include <stdio.h> extern void iterate(int *p); void main(){ int a[]={1,2,3,4,5}; iterate(a); } void iterate(int *p){ int i; for(i=0;i<5;i++){ printf("%d",*p++); } } 指向一维数组的指针 int (*p)[3] #include <stdio.h> void i

c语言指针学习

前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水,食品,你能告诉还有没有问题的吗?不知大难至,世人依旧忙.祸福相依,危中有机.那些高级生命,出于慈悲,会救渡我们,但是你要去思考,去发现机缘. 最近较闲,没事就学点基础知识,整天在上层晃,感觉晕的厉害,接地气.关于指针我上学的时候学过一点,我的老师说"指针很难呢",当时以为这老师挺谦虚的.后

数组与指针学习笔记

1.数组初始化说明 (1).在函数体外定义的内置数组,其元素均被初始化为0: (2).在函数体内定义的内置数组,其元素无初始化: (3).类类型的数组自动调用默认构造函数进行初始化,如果无默认构造函数,则必须为该素族元素提供显示初始化. 2.指针的定义 double *p_dbData1, p_dbData2; p_dbData1为指向double类型的指针,p_dbData2为类型为double的对象,若两个变量都定义为double指针,则如下所示: double *p_dbData1,  *