Fortran 数组
2016-04-05 19:09
302 查看
声明时, 只能使用 常数来赋值数组的大小。
但数组的索引值就可以使用常量或者变量。
声明数组的方法
上面是三种声明数组的方法。都一样。
二维数组的声明
声明二维数组也有很多种方法,如上面的方法一样,只是把括号里,用逗号分开,写几个数就可以。
Fortran最高可声明高达7维的数组。
数组的索引值都是从1开始的。 这可许多语言不太一样。 像C,Java等许多语言都是从0开始的。
但这是默认情况。 Fortran中可以声明 索引值的规则。 如果想从0开始,要这样声明
或者,改成多少都行
多维数组也可以这样声明
数组赋值
赋初值:data 命令
还可以使用星号 * 来表示重复,如
还有一种隐含式的循环
这种隐式循环在write时候也可以使用。
隐式循环还可以嵌套,来给多维数组赋值。 不容易理解。
Fortran 90中可以省略 data
括号跟除号之间不能有空格。
对于部分数组的操作
有点类似于 Python的 用法。
a(3:5)=5
a(3:) = 4 把3之后的都设置成5
Fortran 的 数组保存规则 和 C语言正好相反。
是Column Major的。
CUP的高速缓存。CUP向主存储器拿数据时,会把邻近的几笔数据也拿回来,放在cache中
动态申请内存, 可变大小的数组。
但数组的索引值就可以使用常量或者变量。
声明数组的方法
integer a(10)
integer , dimension(10) :: a
integer a dimension a(10)
上面是三种声明数组的方法。都一样。
二维数组的声明
integer a(3,4)
声明二维数组也有很多种方法,如上面的方法一样,只是把括号里,用逗号分开,写几个数就可以。
Fortran最高可声明高达7维的数组。
数组的索引值都是从1开始的。 这可许多语言不太一样。 像C,Java等许多语言都是从0开始的。
但这是默认情况。 Fortran中可以声明 索引值的规则。 如果想从0开始,要这样声明
integer a(0:5)
或者,改成多少都行
integer a(-5:0)
多维数组也可以这样声明
integer a(-3:3, -5,5)
数组赋值
赋初值:data 命令
integer a(5) data a /1,2,3,4,5/
还可以使用星号 * 来表示重复,如
integer a(5) data a /5 * 3/
还有一种隐含式的循环
integer a(5) integer i data(a(i), i=2,4) /3,4,5/ 结果是 a(2)=3, a(3)=4, a(4)=5, a(1),a(5)没有赋值
这种隐式循环在write时候也可以使用。
隐式循环还可以嵌套,来给多维数组赋值。 不容易理解。
Fortran 90中可以省略 data
integer :: a(5) = (/1,2,3,4,5/)
括号跟除号之间不能有空格。
对于部分数组的操作
有点类似于 Python的 用法。
a(3:5)=5
a(3:) = 4 把3之后的都设置成5
Fortran 的 数组保存规则 和 C语言正好相反。
是Column Major的。
CUP的高速缓存。CUP向主存储器拿数据时,会把邻近的几笔数据也拿回来,放在cache中
动态申请内存, 可变大小的数组。
program main integer , allocatable :: a(:) integer i allocate(a(9)) do i=1,9 a(i) = i*i end do write(*,*) a deallocate(a) end
相关文章推荐
- drbd
- 第6周-项目3-IP地址类
- 第五周项目三 时间类(1)
- Nmap的那些事儿
- 安卓自制的计算器
- CUDA编程(五)关注内存的存取模式
- Leetcode 95. Unique Binary Search Trees II
- 第五周上机实践项目 项目2--游戏中的角色类(2)
- Redis与Memcached的区别
- 第6周项目1—分数类的雏形
- 打印log信息
- ssh 登录会显示最后一个用户,scope prototype
- 第五周项目2(2)
- 【Raspberry Pi系列】4. ARM指令
- corosync
- Fortran 循环
- 欧拉路 (Fleury算法)
- 全排列
- Mysql 安全问题
- HDU 1181