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. 返回一個指針,指向從C到Fortran的設備分配矩陣
- 6. 內存分配指針指向數組和指針指針
- 7. 指針陣列分配
- 8. 分配指向參考的指針
- 9. 如何將雙指針矩陣轉換爲C++中的單個指針向量?
- 10. 線性指數上三角矩陣
- 11. 對象中的指針矩陣C
- 12. 指向字符指針的指針分配問題
- 13. c指向指針內存分配的指針
- 14. C++指針分配(指向矢量)
- 15. 復對稱三對角矩陣的快速矩陣指數
- 16. 聲明,分配和分配指向函數指針的指針數組
- 17. 矩陣指針到子矩陣用C
- 18. 如何將指針指向的地址分配給另一個本地指針
- 19. 爲第一個指針指向的對象分配第二個指針
- 20. 如何訪問指向id對象的指針的指針?
- 21. 如何使矩陣的對角線等於另一個矩陣的對角線?
- 22. 指針在C矩陣
- 23. 矩陣使用指針
- 24. 矩陣功率和指針
- 25. 刪除雙指針(矩陣)
- 26. 矩陣指針語法
- 27. 如何分配指向變量的指針?
- 28. 如何分配兩個指向Struct的指針?
- 29. 取消分配指向對象的指針數組?
- 30. 如何指向矩陣的行或列?
請注意,接受的答案的第二部分使用了Fortran 2003功能。 (即使是第一部分,但這些都可以避免)。 – 2016-05-19 19:35:35
嗨弗拉基米爾,感謝您的評論。我只是編輯以前的問題,讓自己暢通無阻。無法發佈問題了。所以我只是在以前的問題上改進英文。 – Jagte 2016-05-19 19:38:33