. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->自由讨论区
主题 : :  指针的大小,指针是存放的偏移地址吗?  [待解决] 回复[ 10次 ]   点击[ 1334次 ]  
mouse
[帖 主] [ 发表时间:2007-11-26 21:06 ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
指针的类型是由什么决定的呢?    
  sizeof(Type   *)=??    
  ==================    
  指针的大小是由内存寻址空间决定的,即地址总线决定。    
   
  一般32位机寻址空间4G,所以指针占4字节;     
  一般8位的单片机寻址空间是64k,所以指针占2字节。 
---------------------------------- 
指针的大小是由内存寻址空间决定的->能不能说:指针存放的是地址,所以它于内存寻址的能力有关,在8086cpu下,地址线是20根,它的寻址能力是1兆。它采用的是段地址+偏移地址(各占两个字节),指针中存放的是偏移地址-》2个字节?? 

char * a   
int * a    
-----------------  
至于这两个,我觉得前面的数据类型,是在a++的时候起作用,访问下一个数据时候向后地址偏移一个字节还是一个字和取出的字节还是字。
fishboy
[第2楼] [ 回复时间:2007-11-27 11:29 ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
指针也是一个数据类型。指针变量保存的是地址,这个在既定了指针的类别(near,far)之后,指针变量占的内存空间基本上就受指针类别的影响。但是,一个指针类型的数据占多大的内存空间,要看生命的指针的类型是什么类型了,比如说int *p,char *p,当你在p++的时候,他是按照类型占的空间大小为变化单元的,比如说int*p的p++就相当于:p变量的指向的地址 + 2(tc下int型占两个字节),而对于char*p的p++来说就相当于:p变量的指向的地址 + 1(tc下char型占一个字节)。

说的不好,不知道能不能帮楼主。呵呵
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved