Fortran中的指针究竟与C/C++指针有什么不同?

Sha*_*ang 1 c c++ fortran pointers

让两个C/C++程序员和Fortran程序员比较和对比这两种语言中的指针可能会很有用.

在尝试向C/C++程序员解释Fortran指针的不同之处时,我通常会说函数或子程序的指针不存在.然后我尝试使Fortran指针更"高级"的论点,但细节是模糊的.

究竟有什么区别?

Ste*_*nel 8

正如Mark所说,函数和子程序的指针肯定存在于Fortran中.不同之处是:

  • 在C中,指针只是一个地址,而在Fortran中,指针可以有额外的信息,如数组边界和步幅,这就是为什么在声明指针伪参数时需要显式接口的原因
  • 在C中,您必须显式取消引用指针,而在Fortran中,取消引用是自动的(除非在需要指针的上下文中)
  • 在C中,没有关于别名的假设,而在Fortran中,您只能指向具有TARGET属性的东西