找回密码
 注册
Simdroid-非首页
查看: 179|回复: 4

[3. Fortran] 请教:关于common的基本问题

[复制链接]
发表于 2005-5-9 16:49:59 | 显示全部楼层 |阅读模式 来自 美国
我想把11个(66,66,66)的三维变量放入common里。

1)一开始,我是这样设定common的:
common var(66,66,66,7)
common varYT(66,66,66,4)
这样结果都不对,好像var和varYT互相影响,那11个变量都放乱了。这是为什么?

2)我就改成这样:
common /rhs/ var(66,66,66,7),varYT(66,66,66,4)
这样好像对了,但我不太明白。哪位老师能帮忙看一下,这样11各变量是不是分别放在common里而不互相影响?

不太明白为什么是这样的?

谢谢大家
发表于 2005-5-9 22:06:32 | 显示全部楼层 来自 陕西西安

Re:请教:关于common的基本问题

Simdroid开发平台
公用区是按照相对位置来存储的,在第一种情况,都是无名公用区,var和varYT共用相同起始点的一段存储空间,这样var的前面一部分变量和varYT是相同的,也就没有达到你要将11个三位变量存到common中的目的。而第二种情况就避免了这种情况,两个变量用的不同的存储空间,因此是正确的。
另外还可以采取下面的方法:common /one/ var
common /two/ varYT
不妨试一下。
 楼主| 发表于 2005-5-10 00:19:56 | 显示全部楼层 来自 美国

Re:请教:关于common的基本问题

谢谢jinguangyang

原来如果我不给出/*/,就成为无名的。原来我一直错误的以为var和varYT就是所谓的名字。

我刚才试了你的方法,也是正确的。

再次感谢!!
 楼主| 发表于 2005-5-10 02:34:46 | 显示全部楼层 来自 美国

Re:请教:关于common的基本问题

可以在请教一个问题吗:关于公用区的名字。

common /name1/ var
common /name2/ varYT

请问:数字1,2是有效的字符吗?name1,name2这样的只用结尾数字来区分的名字能起到区分的作用吗?

谢谢
发表于 2005-5-10 16:14:21 | 显示全部楼层 来自 哈尔滨工程大学

Re:请教:关于common的基本问题

在cvf6.5中,进行如下程序:
                                program main
    common/a1/ x
    common/a2/ y
    read(*,*) x,y
    c=aid(2.0,3.0)
    write(*,*) c
    end

    function aid(a,b)
    common/a1/ r
    common/a2/ s
    aid=a+b+r+s
    end function aid
当输入:1.0,2.0 时
输出结果8.0
说明:你所问的name1,name2这样的只用数字来区分的名字是能够起到区分的作用的。但是,必须以字母作为名字的开头。(完毕)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 01:26 , Processed in 0.050878 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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