Fortran Coder

标题: 新人关于指针的问题 [打印本页]

作者: lwq1834515    时间: 2015-4-11 09:22
标题: 新人关于指针的问题
      指针可以指向一个一维数组吗(不是数组中的一个数,是整个数组)?      我想对整个数组进行矢量计算。刚刚接触FORTRAN,很多不明白的地方,请多指教。


作者: li913    时间: 2015-4-11 10:24
[Fortran] 纯文本查看 复制代码
program test
    integer,target:: n(3)=(/1,2,3/)
    integer,pointer::p(:)
    p => n
    print*,p
    pause
end program

针对数组运算,ivf编译器会自动矢量化,用不着采用指针。

QQ截图20150411102303.jpg (91.14 KB, 下载次数: 272)

QQ截图20150411102303.jpg

作者: lwq1834515    时间: 2015-4-11 13:25
li913 发表于 2015-4-11 10:24
[mw_shl_code=fortran,true]program test
    integer,target:: n(3)=(/1,2,3/)
    integer,pointer::p(:) ...

    谢谢解答,再请教一下。                                                                                                                                         
    integer,pointer::p(:)的话,不就是三个指针了吗?                                                                              
    最初的想法是把一些向量存在二维数组里,知道行和列的话就可以取出这个向量,指针是不是实现不好?定义成四维的数组会好一点吗?
作者: fcode    时间: 2015-4-11 14:22
integer,pointer::p(:)

是一个指针,不是三个指针。

Fortran 只有“指向数组的指针”,而没有“指向变量的指针数组”。

知道行列,取出向量,不需要指针既可实现。

integer :: a(2,2) = reshape( [1,2,3,4] , [2,2] )
a(:,1) 就是第一行
a(:,2) 就是第二行
a(1,:) 就是第一列
a(2,:) 就是第二列
作者: lwq1834515    时间: 2015-4-11 16:45
fcode 发表于 2015-4-11 14:22
integer,pointer::p(:)

是一个指针,不是三个指针。

啊,我明白了,是一个指针。多谢指教,十分感激。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2