请问指针变量占用几个字节的存储单元?

q_v_i_t 2002-02-21 12:33:37
例如我定义了一个指向整型变量的指针p,那么它占用几个字节了??怎么能看出来了?
...全文
2780 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangyanfeng 2002-03-04
  • 打赏
  • 举报
回复
其实,大家看一看网上流行的《高持量C++/C编程指南》全都明白了,何苦在这费心!
Congy 2002-03-04
  • 打赏
  • 举报
回复
to ddszhan(高等数学):
在32位系统中,已经没有near\far的区别了。
sweet 2002-03-04
  • 打赏
  • 举报
回复
不管指针变量指向哪种类型的变量,占几个字节跟操作系统有关,操作系统如果是32位的,则指针变量占4个字节(32/4),如果是64位的则,占8个字节。
操作系统是几位的又跟硬件有关,如果处理器是32位的,操作系统最高也就32位。
alamb 2002-03-03
  • 打赏
  • 举报
回复
to szxray(林云):
其实,编译器把高级语言汇编了之后就无所谓int、char等类型了,大家在内存中的空间分配都是相同的。
veinstone 2002-03-03
  • 打赏
  • 举报
回复
4
AlexXin 2002-03-02
  • 打赏
  • 举报
回复
32位4Bytes
16位2Bytes
与位数有关
COKING 2002-03-01
  • 打赏
  • 举报
回复
4
Cowboy22 2002-03-01
  • 打赏
  • 举报
回复
用sizeof(cowboy22)看看自己占了多少byte,结果...
cnss 2002-02-25
  • 打赏
  • 举报
回复
haha.真热闹
glyc 2002-02-25
  • 打赏
  • 举报
回复
处理器字长。
jiangchun_xn 2002-02-25
  • 打赏
  • 举报
回复
在c中,指针指向的类型决定指针运算的结果(比如++),它的位数就是取决于编译器,只是一个地址数值..比如DOS下,编译器大部分是16位,指针就是16位.
q_v_i_t 2002-02-25
  • 打赏
  • 举报
回复
好的,谢谢了!
szxray 2002-02-25
  • 打赏
  • 举报
回复
指针实际上只存储一个地址
指针类型的信息是由编译器来确定的,在执行程序中没有相关的信息
实际上可以用强制类型转换将一种类型的指针转换成另一中类型的指针
例如
char *p1;
int i;
int *p2=&i;
p1=(char*)p2; //在程序执行过程中,p1中存储的内容和p2中存储的内容将是一样的
但是在编译过程中,编译器根据指针的定义对p1++和p2++生成了不同的代码。
cnss 2002-02-25
  • 打赏
  • 举报
回复
lanying(蓝鹰):
p?++给编译器看的,不是直接翻译.

int是2个还是4个字节,是由编译器决定的.
指针是2个还是4个字节,也是由编译器决定的.

下面再回复的,如果没试过,就不要乱猜了.
darkay 2002-02-24
  • 打赏
  • 举报
回复
sizeof(int)
Mephisto_76 2002-02-24
  • 打赏
  • 举报
回复
跟操作系统有关!
dynamic_pump 2002-02-24
  • 打赏
  • 举报
回复
同意cnss的意见其实哪怕你用PIIIII…………的机子在TC中的位数也是2,就像zheng_can() 说的它没有用到eax,ebx这样的寄存器。
lanying 2002-02-24
  • 打赏
  • 举报
回复
不会这么简单吧?如果指针所需的内存单元是固定的,那int型,char型指针怎么区分?例如:
char *p1;
int *p2;
p1++;
p2++;
那还得保存类型信息,所以我认为不是固定的
asliuyang 2002-02-24
  • 打赏
  • 举报
回复
我知道我用的 TC2.0 中是两字节
garfield_82 2002-02-24
  • 打赏
  • 举报
回复
同意:32位机中是4字节,16位机为2字节
加载更多回复(26)

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧