想实现用一个指针数组指向自定义类型的某个属性,然后进行其他操作,但是用下面的案例有个错误。
test.f90:30:2:
ages(i) => persons(i)%age
1
Error: Expected bounds specification for 'ages' at (1)
再线求助
[Fortran] 纯文本查看 复制代码
program pointer_to_attribute
implicit none
! 定义Person类型
type :: Person
integer :: age
real :: height
real :: weight
character(len=20) :: name
end type Person
! 声明Person类型的数组,包含5个元素
type(Person) :: persons(5)
! 声明一个指针数组,用来指向persons数组中每个元素的age属性
integer, pointer :: ages(:)
integer :: i
! 初始化persons数组中的元素
do i = 1, 5
persons(i)%age = 20 + i
persons(i)%height = 1.70 + real(i) / 10.0
persons(i)%weight = 60.0 + real(i) * 2.0
write(persons(i)%name, '(A, I1)') 'Person ', i
end do
! 让指针数组ages指向persons数组中每个元素的age属性
allocate(ages(5))
do i=1,5
ages(i) => persons(i)%age
end do
! 输出通过指针访问到的年龄信息,验证是否正确指向
do i = 1, 5
print *, 'Person ', i, ' age (via pointer): ', ages(i)
end do
! 释放指针数组所占用的内存空间
deallocate(ages)
end program pointer_to_attribute
|