0xzhang的博客

Fortran打印变量地址

· 0xzhang

在Fortran中打印出变量的地址,借助loc()获得地址,通过格式化输出设置,输出十六进制大写地址。

主程序用C语言编写,对比Fortran打印出的地址。

// main.c
#include <stdio.h>

void fprint_(int* x);
void cprint(int* x) {
    printf("C print():\n%x\n", x);
}

int main() {
    int x;
    cprint(&x);
    fprint_(&x);
    
    return 0;
}

Fortran代码如下

!     print.f90
      SUBROUTINE fprint(x)
      IMPLICIT NONE
      INTEGER::x
      
      write(*,*) "Fortran print():"
      print '(Z0)', loc(x)
      
      END

编译链接,运行

$ gfortran main.c print.f90
$ ./a.out
C print():
fc0aa5cc
Fortran print():
7FFDFC0AA5CC

参考资料§

  1. LOC (The GNU Fortran Compiler)
  2. Address of a variable - Rosetta Code