| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1451 人关注过本帖
标题:关于指针占几个字节的问题?
只看楼主 加入收藏
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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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
快速回复:关于指针占几个字节的问题?
数据加载中...
 
   



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

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