File: pointers.f90

package info (click to toggle)
gdb-doc 10.1-1
  • links: PTS, VCS
  • area: non-free
  • in suites: bullseye
  • size: 237,684 kB
  • sloc: ansic: 1,939,544; asm: 342,614; exp: 164,373; cpp: 69,350; makefile: 58,777; sh: 25,051; yacc: 13,167; ada: 5,758; xml: 5,461; perl: 5,334; python: 4,759; pascal: 3,220; lisp: 1,575; tcl: 1,541; f90: 1,395; cs: 879; lex: 620; sed: 234; awk: 141; objc: 137; fortran: 62
file content (80 lines) | stat: -rw-r--r-- 2,057 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
! Copyright 2019-2020 Free Software Foundation, Inc.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3 of the License, or
! (at your option) any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program.  If not, see <http://www.gnu.org/licenses/>.

program pointers

  type :: two
    integer, allocatable :: ivla1 (:)
    integer, allocatable :: ivla2 (:, :)
  end type two

  logical, target :: logv
  complex, target :: comv
  character, target :: charv
  character (len=3), target :: chara
  integer, target :: intv
  integer, target, dimension (10,2) :: inta
  real, target :: realv
  type(two), target :: twov

  logical, pointer :: logp
  complex, pointer :: comp
  character, pointer :: charp
  character (len=3), pointer :: charap
  integer, pointer :: intp
  integer, pointer, dimension (:,:) :: intap
  real, pointer :: realp
  type(two), pointer :: twop

  nullify (logp)
  nullify (comp)
  nullify (charp)
  nullify (charap)
  nullify (intp)
  nullify (intap)
  nullify (realp)
  nullify (twop)

  logp => logv    ! Before pointer assignment
  comp => comv
  charp => charv
  charap => chara
  intp => intv
  intap => inta
  realp => realv
  twop => twov

  logv = associated(logp)     ! Before value assignment
  comv = cmplx(1,2)
  charv = "a"
  chara = "abc"
  intv = 10
  inta(:,:) = 1
  inta(3,1) = 3
  realv = 3.14

  allocate (twov%ivla1(3))
  allocate (twov%ivla2(2,2))
  twov%ivla1(1) = 11
  twov%ivla1(2) = 12
  twov%ivla1(3) = 13
  twov%ivla2(1,1) = 211
  twov%ivla2(2,1) = 221
  twov%ivla2(1,2) = 212
  twov%ivla2(2,2) = 222

  intv = intv + 1 ! After value assignment

end program pointers