1
A
回答
4
对于主对角线,小心,你可以这样做:
PROGRAM diagonal
IMPLICIT NONE
REAL, TARGET :: array(4,4)
REAL, POINTER :: ptr(:)
INTEGER :: i
array = RESHAPE([(i,i=1,SIZE(array))], SHAPE(array))
CALL get_diagonal_pointer(array, SIZE(array, 1), ptr)
PRINT "(*(G0,:,','))", ptr
CONTAINS
SUBROUTINE get_diagonal_pointer(arr, n, ptr)
REAL, INTENT(IN), TARGET :: arr(*)
INTEGER, INTENT(IN) :: n
REAL, INTENT(OUT), POINTER :: ptr(:)
!****
ptr => arr(1:n*n:n+1)
END SUBROUTINE get_diagonal_pointer
END PROGRAM diagonal
但请注意,array
主程序是只是连续并具有TARGET属性。如果array
不是简单的连续,那么事情会变得...复杂。
您可以使用中间级别的一个指针和指针边界重新映射来完成相同的操作。与假定尺寸方法相同的要求适用。
REAL, POINTER :: tmp(:)
tmp(1:SIZE(array)) => array
ptr => tmp(::SIZE(array,1)+1)
矩阵的上三角不是“规则”(即要在因人而异指向元件之间的间隔),因此它不能在被指出。
相关问题
- 1. 用指向指针的指针初始化矩阵?
- 2. 如何声明一个指向2d浮点矩阵的指针?
- 3. 类的C++矩阵(指针指针)
- 4. 指向Char阵列指针的指针
- 5. 指针阵列分配
- 6. 如何将双指针矩阵转换为C++中的单个指针向量?
- 7. 线性指数上三角矩阵
- 8. c指向指针内存分配的指针
- 9. 指向字符指针的指针分配问题
- 10. C++指针分配(指向矢量)
- 11. 复对称三对角矩阵的快速矩阵指数
- 12. 矩阵指针到子矩阵用C
- 13. 声明,分配和分配指向函数指针的指针数组
- 14. 如何将指针指向的地址分配给另一个本地指针
- 15. 指针在C矩阵
- 16. 矩阵使用指针
- 17. 删除双指针(矩阵)
- 18. 如何使矩阵的对角线等于另一个矩阵的对角线?
- 19. 如何分配指向变量的指针?
- 20. 取消分配指向对象的指针数组?
- 21. 如何分配堆指针
- 22. int指针在C中的矩阵 - 内存分配混淆
- 23. 分配对象指针
- 24. 指针阵列的内存分配
- 25. 自定义分配器如何知道指针指向数组?
- 26. 指向字符串的指针阵列
- 27. 指向指针的指针和指向数组的指针
- 28. 如何将指针分配给栈上的指针以及堆上的指针?
- 29. 设置指向对象的指针,让对象指向对方
- 30. 指针指向指针
请注意,接受的答案的第二部分使用了Fortran 2003功能。 (即使是第一部分,但这些都可以避免)。 – 2016-05-19 19:35:35
嗨弗拉基米尔,感谢您的评论。我只是编辑以前的问题,让自己畅通无阻。无法发布问题了。所以我只是在以前的问题上改进英文。 – Jagte 2016-05-19 19:38:33