C语言:指针大小到底有什么决定呢?是编译器还是机器字长

# include <stdio.h>
int main(void)
{
int i=10,*p;
p=&i;
printf("%d\n",sizeof(p));
return 0;
}

64位机器上
Turbo C 3.0中输出2
VC++ 6.0中输出4

请问指针大小到底是由什么决定呢?

指针大小和系统位数有关,如果你的电脑系统是32位,那么指针就占用4个字节,如果是64位的就占用8个字节,追问

为什么tc返回值跟vc返回值不一样。相同计算机上应该值相同啊

追答

软件版本不同,占用的字节数也不同

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言:指针大小到底有什么决定呢?是编译器还是机器字长
指针大小和系统位数有关,如果你的电脑系统是32位,那么指针就占用4个字节,如果是64位的就占用8个字节,

指针的大小到底是由谁决定?是多少?
指针大小和机器字长相同,即32位机指针长度为4字节。使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。一般出现在比较底层...

指针的大小到底是由谁决定?是多少?
综上可得:指针大小是由当前CPU运行模式的寻址位数决定!

C语言中有32个关键词,9种控制语句,34种运算符,分别是哪些?
char :字符型类型数据,属于整型数据的一种 int :整型数据,通常为编译器指定的机器字长 float :单精度浮点型数据,属于浮点数据的一种 double :双精度浮点型数据,属于浮点数据的一种 short :修饰int,短整型数据,可省略被修饰的int。long :修饰int,长整形数据,可省略被修饰的int。signed :...

在C语言中一个指针占用多少字节。
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。比如以前是16位系统,指针即为2个字节,现在一般是32位系统,所以是4个字节。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的...

C语言中的指针是个什么类型的变量?
1.指针的类型 就是 指针 指针大小和内存的编址方式有关,只是恰好与无符号整形大小相同 他的大小是 4字节(32位) 就是类似 0012ff78(16进制 32位)注:如果你的电脑是64位电脑 那么他的大小就是8字节!2.指针是用来保存 内存地址的 内存有 按32位编制 和按64位编制之分 3.为什么要给指针定义...

C语言中不同的数据类型的长度和什么有关
和编译器有关。每种类型占用的字节数,是和编译器直接相关的,也就是常说的编译器的字长。以整型系列的类型,char, short, int, long为例:1 16位字长:对于16位编译器,char占1字节,short占2字节,int占2字节,long占4字节。2 32位字长:对于32位编译器,char 占1字节,short占2字节,int占...

c语言中指针到底有几种类型啊?
枚举和指针类型都不是基本数据类型C语言有五种基本数据类型:字符、整型、单精度实型、双精度实型和空类型。尽管这几种类型数据的长度和范围随处理器的类型和C语言编译程序的实现而异,但以bit为例,整数与CPU字长相等,一个字符通常为一个字节,浮点值的确切格式则根据实现而定C语言还提供了几种聚合...

2.1认识字长
程序计数器(PC)也属于32位宽度,存放下一条将要执行的指令地址,虚拟地址空间范围为0~FFFF FFFFH,大小为4GB。C程序中的指针数据大小由编译选项决定,32位程序为32位地址,64位程序为64位地址。64位计算机可以运行32位程序,这是向后兼容的特性。“字”和“字长”是不同的概念,“字”表示处理信息的...

C++,根据sizeof(指针)的大小判断操作系统的位数可以么
sizeof(指针)的大小只跟当前程序的编译设置有关。比如,你用VC编译一个32位的程序,那么sizeof(void *)的值就是32。就算你在64位的windows上运行这个程序,sizeof(void*)还是32,因为这已经在编译的时候就确定了。同样,如果你编译的是一个64位程序,那么sizeof(void*)就是64,就算将来有128位...

相似回答