在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