主题:请高手帮忙解决一个指针方面的问题,不胜感激
我想用一个数组与地址不连续的几个变量的值,始终保持一致,不知道有没有好的解决办法?
例如:有一些各子程序中需要经常使用的变量a,b,c(2),我想用一个数组arr(4)分别存储a,b,c(2),且不管a,b,c(2)中的值如何变化,arr(4)中的值始终与a,b,c(2)中的值保持一致(arr(1)=a,arr(2)=b,arr(3)=c(1),arr(4)=c(2))。
我试过用指针,发现指针数组似乎只能指向与其大小匹配的数组,而不能指向单个变量,例如:
real,target :: a,b,c(2)
real,pointer :: arr(:)
a=1.0
b=2.0
c(1)=3.0
c(2)=4.0
allocate(arr(4))
arr(1)=>a
arr(2)=>b
arr(3:4)=>c
end
编译发生错误:
Compiling Fortran...
D:\test\test.f90
D:\test\test.f90(8) : Error: Object is not a pointer object [ARR]
arr(1)=>a
^
D:\test\test.f90(9) : Error: Object is not a pointer object [ARR]
arr(2)=>b
^
D:\test\test.f90(10) : Error: Object is not a pointer object [ARR]
arr(3:4)=>c
望能得到高手的指点,不胜感激!
例如:有一些各子程序中需要经常使用的变量a,b,c(2),我想用一个数组arr(4)分别存储a,b,c(2),且不管a,b,c(2)中的值如何变化,arr(4)中的值始终与a,b,c(2)中的值保持一致(arr(1)=a,arr(2)=b,arr(3)=c(1),arr(4)=c(2))。
我试过用指针,发现指针数组似乎只能指向与其大小匹配的数组,而不能指向单个变量,例如:
real,target :: a,b,c(2)
real,pointer :: arr(:)
a=1.0
b=2.0
c(1)=3.0
c(2)=4.0
allocate(arr(4))
arr(1)=>a
arr(2)=>b
arr(3:4)=>c
end
编译发生错误:
Compiling Fortran...
D:\test\test.f90
D:\test\test.f90(8) : Error: Object is not a pointer object [ARR]
arr(1)=>a
^
D:\test\test.f90(9) : Error: Object is not a pointer object [ARR]
arr(2)=>b
^
D:\test\test.f90(10) : Error: Object is not a pointer object [ARR]
arr(3:4)=>c
望能得到高手的指点,不胜感激!