go语言怎么输出存放指针的数组

Python08

go语言怎么输出存放指针的数组,第1张

以下代码在VC6.0以上版本测试通过!

输出结果:6

#include <stdio.h>

int main(void)

{

int a[2][2] = {{1,2}, {3,4}}

int b[2][2] = {{5,6}, {7,8}}

int (*p1)[2] = a

int (*p2)[2] = b

int (*q[2])[2] = {p1, p2} 这样才是正确的定义!

printf("%d\n", *(*q[1]+1))

return 0

}

但在tc2.0和bc3.1中提示非法初始化!

但把

int (*q[2])[2] = {p1, p2}

改成

int (*q[2])[2]

q[0] = p1

q[1] = p2

可以通过!

原因暂不清楚,估计是老旧的编译器不支持太复杂的定义!

其实最好的方法是使用typedef,简单明了,可读性大大提升!

#include <stdio.h>

int main(void)

{

typedef int (*PA)[2] 使用typedef

int a[2][2] = {{1,2}, {3,4}}

int b[2][2] = {{5,6}, {7,8}}

int (*p1)[2] = a

int (*p2)[2] = b

PA q[2]= {p1, p2} 这样可读性是否大大的增加?!

printf("%d\n", *(*q[1]+1))

return 0

}

一.几种公共方法

1)Print:   输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v)

print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时候用

2)Println: 输出到控制台并换行

3)Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出整形变量和整形等)

4)Sprintf:格式化并返回一个字符串而不带任何输出

5)Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout

二.带占位符输出--网址:     https://www.jianshu.com/p/8be8d36e779c

和python差不多的道理,这里简单补充

v     值的默认格式

%+v   添加字段名(如结构体)

%#v  相应值的Go语法表示 

%T    相应值的类型的Go语法表示 

%%    字面上的百分号,并非值的占位符

%c     相应Unicode码点所表示的字符 

%x     十六进制表示,字母形式为小写 a-f

%X     十六进制表示,字母形式为大写 A-F

%U     Unicode格式:U+1234,等同于 "U+%04X"

于c语言相同,go中也有指针和结构体的概念。指针表示变量的内存地址,结构体用来存储同一类型的数据。

定义一个指针变量,将变量a的地址赋给指针变量p。这样,指针变量p也就指向了变量a所在的内容空间。

new 函数返回一个指针变量

fmt.scan() 就是传入一个指针变量。

两种方法都可以使用。

以上简要介绍了go语言中的指针和结构体。