标题:关于指针占几个字节的问题?
只看楼主
johnzsj
Rank: 2
等 级:论坛游民
帖 子:54
专家分:27
注 册:2017-2-10
结帖率:93.75%
已结贴  问题点数:20 回复次数:6 
关于指针占几个字节的问题?
指针不应该根据它定义的数据类型的大小来定义它的字节大小吗?
为什么输出的都是4个字节
#include<stdio.h>

int main()
{
    int i = 99;
    char a = 100;
    double b = 120;
   
    int * p;
    char * q;
    double * r;
   
    p=&i;
    q=&a;
    r=&b;
   
    printf("%d %d %d\n",sizeof(p),sizeof(q),sizeof(r));
   
    return 0;
}

结果:
4 4 4
请按任意键继续. . .
搜索更多相关主题的帖子: double return 
2017-02-14 09:41
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:4 
指针本身所占字节数,跟它指向的类型无关。

[此贴子已经被作者于2017-2-14 09:51编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-14 09:49
johnzsj
Rank: 2
等 级:论坛游民
帖 子:54
专家分:27
注 册:2017-2-10
得分:0 
回复 2楼 renkejun1942
那它为什么会占4个字节
2017-02-14 11:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
与寻址范围有关
16位2字节
32位4字节
64位8字节
2017-02-14 11:33
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
得分:2 
因为为了方便数据处理,它刚好是一个字的长度,也就是int的长度。
2017-02-14 11:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
指针有两个重要特性:
地址属性,是指针p自身存储地址的数值,其大小范围与系统可寻址范围的大小有关,通常16位系统是16bit(2字节),32位系统是32bit(4字节),64位系统是64bit(8字节)。
大小属性,是指针p代表存储的数据块大小,也有说法是指针p类型大小,或指针p的步长大小等。
这样对比看看这两个属性的输出的结果:
#include<stdio.h>

int main()
{
    int i = 99;
    char a = 100;
    double b = 120;
   
    int * p;
    char * q;
    double * r;
   
    p=&i;
    q=&a;
    r=&b;
   
    printf("%d %d %d\n",sizeof(p),sizeof(q),sizeof(r));
    printf("%d %d %d\n",sizeof(*p),sizeof(*q),sizeof(*r));
   
    return 0;
}
2017-02-15 07:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
如果是64位系统,分别用32位和64位编译器编译运行下面代码看看:
32位编译器编译运行结果显示:4
64位编译器编译运行结果显示:8

#include <stdio.h>
main()
{
    char *p;
    printf("%d\n",sizeof(p));
}

[此贴子已经被作者于2017-2-15 08:01编辑过]

2017-02-15 07:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474194-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.348048 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved