Ja5oN 发表于 2007-1-14 13:25

一个字节八位拉!
不然怎样说??
#17又说指针的类型应该说是字(非字节),它的长度是计算机的字长
难道不是这样吗?

powerwind 发表于 2007-1-14 15:43

对哦,四八三十二

hjack 发表于 2007-1-14 22:52

指针是一种复合的数据类型.
指针包含了本身的值和所指向的物.
本身的值就是一个内存地址.
我们说int *p;char *p;这些,其实就是一个指向int整的指针,一个指向char整的指针.
它的值是一个地址,这个地址里只能放int ,char类型的数据.
本质上,指针是一个内存地址,而对应的数据类型的存放,则是编译器检查的.
我是这样理解的.请拍砖.

iptton 发表于 2007-1-14 22:56

楼主想了解的就是编译器对指针的处理……

楼上好多都理解错了楼主的意思。。

hjack 发表于 2007-1-14 22:57

它的size是与机器字长相关的.
32位机器应该是4
所以
char *p=(char*)malloc(100));
sizeof(p)应该是4 ...

powerwind 发表于 2007-1-14 23:04

/*假设指针是这样的结构体*/

typedef struct _pointer
{
      int address;
      char type;
      char others;
}Pointer;

int main()
{
Pointer p;
p.address=4656;
p.type='a';
p.others='x';
printf("%d",p);
system("pause");
return 0;
}
输出结果为:4656

对我们来说,指针只有address成员,而实际上还有类型值type等。
不知这样理解,可不可以?

gyCai 发表于 2007-1-15 11:06

如果说,指针里面的指向地址的域是int类型的话,就有点儿明白了。
楼上的应该加上如下:
...
char others;
functions:
add(pointer+i)::= pointer.address+i*sizeof(pointer);
comp(pointer,NULL) ::=if(pointer==0) return 1;
                                           else return 0;
...
...

powerwind 发表于 2007-1-15 13:34

楼上,我们的假设还像模像样,但实际上可能完全不是这么回事。
要去哪找答案呢?

gyCai 发表于 2007-1-15 14:07

回楼上的:就是因为不知道去哪儿找,所以贴出来讨论......
唉~~~

Ja5oN 发表于 2007-1-16 22:16

原帖由 hjack 于 2007-1-14 22:57 发表
它的size是与机器字长相关的.
32位机器应该是4
所以
char *p=(char*)malloc(100));
sizeof(p)应该是4 ...
为什么我在32位处理器的机上和64位处理器的机上运行
char *p=(char*)malloc(100));
sizeof(p)
得到的结果都是4?

iptton 发表于 2007-1-16 23:25

应该不是CPU的问题,而是运行环境的问题
如果你在VISTA 下应该会有不同的结果。。。

Ja5oN 发表于 2007-1-17 00:04

o!那我得找部vista才行!
我得的机用不了vista

iptton 发表于 2007-1-17 01:33

刚刚搜了下

貌似VISTAXP 都有32BIT和 64BIT 版本的...

powerwind 发表于 2007-1-17 01:44

难道说硬件是64位的,系统也是64位的,才可以运行出指针长度为8?

iptton 发表于 2007-1-17 02:03

32位硬件可以运行64位系统吗? - -#

powerwind 发表于 2007-1-17 02:10

64位硬件可以运行32位系统吗? - -#

iptton 发表于 2007-1-17 02:13

可以...

Ja5oN 发表于 2007-1-17 12:28

64bit硬件可以向下兼容32bit的操作系统
但是32bit的硬件应该跑不起64bit的操作系统

gyCai 发表于 2007-1-17 13:41

32bit的硬件绝对跑不起64bit的系统!
指针的长度应该是跟硬件和系统环境都有关。

jinry 发表于 2007-1-23 02:17

LS的说得有道理....
页: 1 [2]
查看完整版本: 关于指针和地址