获取未实例化的用户定义数据类型的数组大小
Get size of array in uninstantiated user-defined data type
说下面的模块给我,我不能编辑:
module somemod
type somestruct
character(40) somestr
end type
end module
我在这段代码中使用了它:
program myprog
use somemod
implicit none
character(size(somestruct%somestr)) localstr !Is this possible?
end program
是否有语法完成标记行试图做的事情?也就是说,我可以在不实例化数据结构的情况下获取用户自定义数据结构中数组的大小吗?
首先,
character(40) somestr
不是数组,是长度为40的字符串
差别很大,不是吹毛求疵。您使用数组和字符串的方式不同。有关更多信息,请参阅 。
字符串的长度由内部函数len()
查询。
但不幸的是,如果不首先拥有该类型的变量(实例),则不能在派生类型的组件上调用它。
所以你需要
program myprog
use somemod
implicit none
type(somestruct) :: o
character(len(o%somestr)) localstr !This is possible.
end program
如果您需要数组组件的大小,它会是相同的,但使用 size()
内部函数。
说下面的模块给我,我不能编辑:
module somemod
type somestruct
character(40) somestr
end type
end module
我在这段代码中使用了它:
program myprog
use somemod
implicit none
character(size(somestruct%somestr)) localstr !Is this possible?
end program
是否有语法完成标记行试图做的事情?也就是说,我可以在不实例化数据结构的情况下获取用户自定义数据结构中数组的大小吗?
首先,
character(40) somestr
不是数组,是长度为40的字符串
差别很大,不是吹毛求疵。您使用数组和字符串的方式不同。有关更多信息,请参阅
字符串的长度由内部函数len()
查询。
但不幸的是,如果不首先拥有该类型的变量(实例),则不能在派生类型的组件上调用它。
所以你需要
program myprog
use somemod
implicit none
type(somestruct) :: o
character(len(o%somestr)) localstr !This is possible.
end program
如果您需要数组组件的大小,它会是相同的,但使用 size()
内部函数。