Skip to content

Commit e1e4e57

Browse files
authored
Update ch08-03-pointertips.md
1 parent 7c50f3c commit e1e4e57

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/ch08-03-pointertips.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,21 @@ write(*,*)pa(1::size(a,dim=1)+1) !获取对角项
1616
```
1717

1818
如果在子程序或者函数中,我们则需要为数组设置`contiguous`关键字
19-
```
19+
``` fortran
20+
module diag_mod
21+
implicit none
22+
contains
23+
function diag(a)result(ptr)
24+
real,intent(in),target,contiguous::a(:,:) !需要加contiguous属性
25+
real,pointer::ptr(:)
26+
ptr(1:size(a))=>a
27+
ptr=>ptr(1::size(a,dim=1)+1) !取对角项
28+
end function diag
29+
end module diag_mod
30+
2031
program main
32+
use diag_mod
33+
implicit none
2134
real,target::a(10,10)
2235
integer::i
2336
real,pointer::p(:)
@@ -28,13 +41,6 @@ program main
2841
do i=1,10
2942
write(*,*)a(i,i)
3043
end do
31-
contains
32-
function diag(a)result(ptr)
33-
real,intent(in),target,contiguous::a(:,:) !需要加contiguous属性
34-
real,pointer::ptr(:)
35-
ptr(1:size(a))=>a
36-
ptr=>ptr(1::size(a,dim=1)+1) !取对角项
37-
end function diag
3844
end program main
3945
```
4046
- `contiguous`属性对于数组的连续性做了强制要求,有时候**可以使得编译器做出更好的优化,提高代码运行速度**,因此在普通的含数组的过程中,也可以选择使用

0 commit comments

Comments
 (0)