Fortran Coder

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

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

[复制链接]

13

帖子

4

主题

0

精华

入门

F 币
88 元
贡献
52 点
跳转到指定楼层
楼主
发表于 2021-6-20 18:21:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
一些资料中说Fortran指针是一种数据对象,它包含特定对象的更多信息,例如类型、维度、各维度元素数、内存地址等。这不同于其它大多数编程语言。
彭国伦书中说指针实际上记录内存地址,每种类型的指针在32位机上就是4字节,不论其指向什么数据类型。

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

因为我是初学,所以问题没办法聚焦。能得到各位的指点,谢谢!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

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

5#
发表于 2021-6-21 14:22:49 | 只看该作者
指针使用起来“像”别名一样。但实质并不是别名,而是目标的一种引用和描述。

13

帖子

4

主题

0

精华

入门

F 币
88 元
贡献
52 点
地板
 楼主| 发表于 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指针的效果。
您觉得呢?

13

帖子

4

主题

0

精华

入门

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

谢谢大神!

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

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

沙发
发表于 2021-6-20 22:29:52 | 只看该作者
指向单变量的指针(无论其指向变量的数据类型,甚至派生类型),如彭国论说的一样。是记录的内存地址。
指向数组的指针,是一种数据对象,它包含特定对象的更多信息,例如类型、维度、各维度元素数、内存地址等。
(Fortran的指向数组的指针,不但知道数组首元素的地址。还知道数组的维度,各维度大小,上下限和间距!!是的,没错,Fortran的数组在内存里不一定是连续的)
不能理解为“别名”
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 22:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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