Fortran Coder

查看: 7594|回复: 4
打印 上一主题 下一主题

[指针] 指向派生类型的指针大小问题

[复制链接]

259

帖子

0

主题

0

精华

版主

World Analyser

F 币
717 元
贡献
510 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
楼主
发表于 2020-4-27 17:01:01 | 显示全部楼层
Fortran的指针不能用 sizeof() 函数查看其本身的大小。

注意:fortran中,指针 a,只能访问它指向的内容,而不能访问指针本身
也就是说,a 就是 C语言中的 *a

如果你真的要知道指针的大小,可以这样做:
[Fortran] 纯文本查看 复制代码
type ss
  type(bigdata),pointer:: p
end type ss
type(ss) :: pss
print*,sizeof(pss)


你会发现,指向任何数据类型的指针,本身都是4字节(或64位系统的8字节)
而指向数组的指针,就比较大,通常一维数组会在30字节,二维数组更大一些(不同编译器结果不同)

这是因为,Fortran的指向数组的指针,除了C指针拥有的数组内容的首地址之外,还拥有这个数组的维度,大小,上下限等信息。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-1 09:03

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表