像在C ++中一样,如何在Fortran中使用带有指针的结构?

时间:2019-07-09 01:12:42

标签: fortran

我已经使用C ++几年了。然后,我决定使用Fortran以获得更好的数学性能。在C ++中,我具有以下结构,可以在各处使用:

structure     BitMap{
char*     rgba;         // pointer to the color array
int       w, h;};       // dimension of my bitmap

另一方面,在Fortran中:

Program Bitmap_p
implicit none
type BitMap
character :: rgba(*) ! like a pointer to bitmap array (colors and alpha)
integer:: w  ! bitmap width
integer:: h  ! bitmap height
endtype BitMap
endprogram Bitmap_p

但是,在编译时,编译器指出:

  
      
  1. f90(4):错误#6530:此组件的数组规格必须为显式形状,并且每个边界都必须为初始化表达式。 [RGBA]
  2.   

1 个答案:

答案 0 :(得分:1)

您应该能够在fortran中使用TYPEPOINTER来完成C语言中的struct*的操作。

Program Bitmap_p
implicit none
type BitMap
character, pointer :: rgba(:) ! like a pointer to bitmap array (colors and alpha)
integer:: w  ! bitmap width
integer:: h  ! bitmap height
endtype BitMap

type(BitMap) :: bmap

bmap%w = 10
bmap%h = 10
allocate( bmap%rgba(4*bmap%w*bmap%h) )

endprogram Bitmap_p