首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fortran中的指针和C++有什么不同

Fortran中的指针和C++有什么不同
EN

Stack Overflow用户
提问于 2017-05-27 20:33:57
回答 1查看 356关注 0票数 2

我已经用Fortran95/08编写了一个子例程包,用于用C++编写的带有iso_c绑定的模拟。我注意到,要将Fortran指针转换为C++指针,必须调用例程c_loc。为什么?这是做什么的?我知道这使得C++程序能够访问记录指针中的数据,但是什么是比地址更重要的指针呢?

博·桑德曼

EN

回答 1

Stack Overflow用户

发布于 2017-05-27 21:01:43

Fortran指针通常可以实现为一个地址。在许多情况下(非多态标量),在Fortran指针上创建C指针的c_loc()只是一个强制转换,仅此而已。对于c_f_pointer()也是一样,它只是对非多态标量的强制转换。

对于多态实体,Fortran指针携带有关动态类型的信息。

对于数组,Fortran指针包含数组描述符,它存储第一个元素的地址、每个维度中的秩、上下界和步长。这就是为什么必须在c_f_pointers()中指定数组的维度。

Fortran指针数组可以是不连续的,例如,只是较大数组的一个子部分。在C中没有非连续数组指针的等价物。

它与指针别名没有任何关系。允许Fortran指针作为别名。不允许使用非指针伪参数作为别名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44216929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档