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