Fortran Coder

查看: 6880|回复: 4
打印 上一主题 下一主题

[指针] 新人关于指针的问题

[复制链接]

16

帖子

3

主题

0

精华

入门

F 币
51 元
贡献
26 点
跳转到指定楼层
楼主
发表于 2015-4-11 09:22:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
      指针可以指向一个一维数组吗(不是数组中的一个数,是整个数组)?      我想对整个数组进行矢量计算。刚刚接触FORTRAN,很多不明白的地方,请多指教。

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2015-4-11 10:24:48 | 只看该作者
[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

16

帖子

3

主题

0

精华

入门

F 币
51 元
贡献
26 点
板凳
 楼主| 发表于 2015-4-11 13:25:06 | 只看该作者
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(:)的话,不就是三个指针了吗?                                                                              
    最初的想法是把一些向量存在二维数组里,知道行和列的话就可以取出这个向量,指针是不是实现不好?定义成四维的数组会好一点吗?

1962

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1353 元
贡献
572 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2015-4-11 14:22:54 | 只看该作者
integer,pointer::p(:)

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

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

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

integer :: a(2,2) = reshape( [1,2,3,4] , [2,2] )
a(:,1) 就是第一行
a(:,2) 就是第二行
a(1,:) 就是第一列
a(2,:) 就是第二列

16

帖子

3

主题

0

精华

入门

F 币
51 元
贡献
26 点
5#
 楼主| 发表于 2015-4-11 16:45:40 | 只看该作者
fcode 发表于 2015-4-11 14:22
integer,pointer::p(:)

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

啊,我明白了,是一个指针。多谢指教,十分感激。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-26 01:54

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表