Fortran Coder

查看: 572|回复: 4

[指针] 如何理解Fortran指针的本质?

[复制链接]

9

帖子

3

主题

0

精华

入门

F 币
60 元
贡献
35 点
发表于 2021-6-20 18:21:20 | 显示全部楼层 |阅读模式
一些资料中说Fortran指针是一种数据对象,它包含特定对象的更多信息,例如类型、维度、各维度元素数、内存地址等。这不同于其它大多数编程语言。
彭国伦书中说指针实际上记录内存地址,每种类型的指针在32位机上就是4字节,不论其指向什么数据类型。

到底哪种说法正确?还是说将指针理解成变量的别名更好?

因为我是初学,所以问题没办法聚焦。能得到各位的指点,谢谢!
回复

使用道具 举报

1622

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1972 元
贡献
1249 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2021-6-20 22:29:52 | 显示全部楼层
指向单变量的指针(无论其指向变量的数据类型,甚至派生类型),如彭国论说的一样。是记录的内存地址。
指向数组的指针,是一种数据对象,它包含特定对象的更多信息,例如类型、维度、各维度元素数、内存地址等。
(Fortran的指向数组的指针,不但知道数组首元素的地址。还知道数组的维度,各维度大小,上下限和间距!!是的,没错,Fortran的数组在内存里不一定是连续的)
不能理解为“别名”

9

帖子

3

主题

0

精华

入门

F 币
60 元
贡献
35 点
 楼主| 发表于 2021-6-21 10:24:52 | 显示全部楼层
fcode 发表于 2021-6-20 22:29
指向单变量的指针(无论其指向变量的数据类型,甚至派生类型),如彭国论说的一样。是记录的内存地址。
指 ...

谢谢大神!

9

帖子

3

主题

0

精华

入门

F 币
60 元
贡献
35 点
 楼主| 发表于 2021-6-21 10:50:04 | 显示全部楼层
fcode 发表于 2021-6-20 22:29
指向单变量的指针(无论其指向变量的数据类型,甚至派生类型),如彭国论说的一样。是记录的内存地址。
指 ...

您好,
确实如你所说,《modern fortran》p28中的介绍,“在数组的情况下,只声明秩(维数),边界(以及形状)是从它所指向的对象中选取的。给定这样的声明,编译器会为描述符安排存储空间,该描述符稍后将保存实际对象(称为目标)的地址,如果是数组,还保存其边界和步长。”
但同时,《modern fortran》将fortran指针解释为An object that can be made to refer to other objects in this way is called a pointer。其他一些资料也会使用引用、变量别名的说法。感觉上“别名”的说法能解释fortran指针的效果。
您觉得呢?

1622

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1972 元
贡献
1249 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2021-6-21 14:22:49 | 显示全部楼层
指针使用起来“像”别名一样。但实质并不是别名,而是目标的一种引用和描述。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2021-9-24 11:11

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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