Fortran Coder

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

[指针] 指向派生类型的指针大小问题

[复制链接]

31

帖子

10

主题

0

精华

熟手

F 币
334 元
贡献
128 点
跳转到指定楼层
楼主
发表于 2020-4-27 12:51:20 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 愤怒的三炮 于 2020-4-27 17:21 编辑

【编译器 gfortran】
【版本 gcc version 8.1.0】
刚学Fortran的指针,想看看声明出来的指针大小:
[Fortran] 纯文本查看 复制代码
program test_pointer_size
    implicit none
    integer,dimension(:,:),pointer::p=>null()
    integer,dimension(100,100),target::var
    
    print*,'the size of disassociated pointer is:'
    print*,sizeof(p)
    var(:,:) = 0
   
end

此时指针所占大小为4字节;

但是当我准备将它指向type类型时:
[Fortran] 纯文本查看 复制代码
 program test_pointer_size
    implicit none
    type bigdata
        integer,dimension(100,100)::A
    end type

    type(bigdata),pointer:: p => null()
    type(bigdata),target:: var
    
    print*,'the size of pointer without association is:'
    print*,sizeof(p)
    
    var%A(:,:) = 0
    
end

显示指针所占大小为40000字节,也就是type所占的大小。
为什么会不同呢?
请清楚的朋友指点一下,刚看Fortran的指针,不太会,先谢谢了!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

31

帖子

10

主题

0

精华

熟手

F 币
334 元
贡献
128 点
沙发
 楼主| 发表于 2020-4-27 17:00:48 | 显示全部楼层
li913 发表于 2020-4-27 16:03
第一个,integer类型的指针,该类型4字节; 第二个,bigdata类型的指针,该类型40000字节。另外,第一个代 ...

感谢您的回复!
指针不是只有几个字节大小么?请看下面的C代码:
[Fortran] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
int main() {
	
	int* p = NULL;

	p = (int*)malloc(10*sizeof(int));
	
	printf("%d\n", sizeof(p));

	free(p);
	return 0;
}

是因为Fortran里面的指针有什么特别的地方么?

31

帖子

10

主题

0

精华

熟手

F 币
334 元
贡献
128 点
板凳
 楼主| 发表于 2020-4-27 17:04:31 | 显示全部楼层
kyra 发表于 2020-4-27 17:01
Fortran的指针不能用 sizeof() 函数查看其本身的大小。

注意:fortran中,指针 a,只能访问它指向的内容, ...

谢谢您,豁然开朗,学习了学习了!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-3 18:54

Powered by Tencent X3.4

© 2013-2024 Tencent

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