2013-10-15 96 views
0

一个指针将被分配一个字节,所以它可以寻址多达2^8个地址,即只有128个地址,但一个32位机器可以寻址多达2^32个地址,然后指针将如何保存超过8位的地址,我很困惑,任何人都可以请帮助。指针大小和地址范围

+3

什么的第一句话平均4个字节 - 是一个断言,一个假设,一个评估还是一个问题?无论如何,这是没有道理的。 –

+0

在32位机器上,指针通常是4个字节。 –

+0

在32位机器上指针将为32位(4字节) – tristan

回答

4

32位二进制指针的大小通常为4个字节。如果您将代码编译为64位二进制文​​件,则指针的大小应为8个字节。解决可用内存足够大。

您可以检查任何类型的指针变量的大小这样

printf("%zu\n", sizeof(int *)); 

好像你的charchar *大小之间的混淆。 char存储一个字符变量,其大小是一个字节。你可以检查一下:

printf("%zu\n", sizeof(char)); 

然而,char *是一个指向char,其大小一般都在32位环境

printf("%zu\n", sizeof(char *)); 
+0

char * p的大小将是一个字节,请您解释一下这个 – user2717079

+2

char的大小是一个字节。但是,假设你正在使用32位系统,则char *的大小将为4个字节。 – Kunal

+0

@ user2717079您将'char'与'char *'的大小混淆在一起。 'char *'的大小完全取决于您的机器拱门。 –