@H_502_8@
var inter *
;
inter =
);
*inter = 3;
outer = &inter;
//地址一样
fmt.Println(inter);
fmt.Println(*outer);
//值一样
fmt.Println(*inter);
*inter;
));
*inter = 3;
*outer = inter;
//地址一样
);
:rgb(64,*outer);
//值一样
:rgb(64,*inter);
;
*inter = 3;
*outer = inter;
//地址一样
fmt.Println(inter);
fmt.Println(*outer);
//值一样
fmt.Println(*inter);
上面都是在玩指针,下面看看基本的数据结构.
@H_502_8@
基本的数据结构有: 数组与结构体 (map和树之类的不在討論范围)
golang中的数组与C中的数组有很大的差别
golang中的数组是这样说的: Arrays are values,not implicit pointers as in C.
0. 数组做参数时,需要被检查长度.
1.
变量名不等于数组开始指针!
@H_502_8@
2. 不支持C中的*(ar + sizeof(int))方式的指针移动. 需要使用到unsafe包
3. 如果p2array为指向数组的指针, *p2array不等于p2array[0]
@H_502_8@例子0 数组做参数时,宋体; font-size:13px; line-height:22.5px">
func use_array( args [4]
){
args[1] = 100;
}
func main() {
use_array(args);
fmt.Println(args);
}
编译出错: cAnnot use args (type [5]int) as type [4]int in function argument,需要有长度上的检查
例子1 变量名不等于数组开始指针!
p->x = 10;
p->y = 20;
//开始地址
:rgb(64,p);
//地址
//某元素地址
p =
(Point);
p.x = 10;
p.y = 20;
//地址
也可以说是一样的,只不过在使用结构中的元素时没有了"->"操作符:
There is no -> notation for structure pointers. Go provides the indirection for you.
@H_502_8@结构体的地址传参与数组的方式一样,当然,和C的风格也是一模一样的. 如下例子:
"fmt"
;
;
};
p.x = 100;
}
func main() {
var p *Point;
(Point);
p.x = 10;
p.y = 20;
:rgb(64,p.X);
}
// passes a copy of ar
fp(&ar);
// passes a pointer to ar
以上是大佬教程为你收集整理的golang指针与C指针的异同全部内容,希望文章能够帮你解决golang指针与C指针的异同所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。