一个指针变量占几个字节问题
一个指针变量到底占几个字节【非重点】
预备知识:
sizeof(数据类型)
功能:返回值就是该数组类型所占的字节数
例子: sizeof(int) = 4
sizeof(char) = 1
sizeof (double) = 8
sizeof(变量名)
功能:返回值就是该变量所占的字节数
假设p指向char类型(1个字节)
假设q指向int类型(4个字节)
假设r指向double类型(8个字节)
p q r 本身所占的字节数是一样的
一个指针变量,无论它指向的变量占几个字节,该变量本身只占4或8个字节
一个变量的地址是用该变量首字节的地址来表示
例
# include <stdio.h>
int main (void)
{
char ch = 'A';
int i = 99;
double x = 66.6;
char *p = &ch;
int *q = &i;
double *r = &x;
printf("%d %d %d\n",sizeof(p),sizeof(q),sizeof(r) );
return 0;
}
/*
在DEVC++中输出的结果是
-----------------------
8 8 8
-------------------------
原因:
32位的操作系统的寻址空间是0~2^32,即0x00000000~0xFFFFFFFF,指针长度为 4个字节;
64位的操作系统的寻址空间是0~2^64,即0x0000000000000000~0xFFFFFFFFFFFFFFFF,指针长度为 8个字节
*/
32位的操作系统的寻址空间是0-2^32,即0x00000000-0xFFFFFFFF,指针长度为4个字节;
64位的操作系统的寻址空间是0-2^64,即0x0000000000000000-0xFFFFFFFFFFFFFFFF,指针长度为8个字节