转自:http://blog.csdn.net/koches/article/details/7627381
首先 假设p指向char类型变量 (占1个字节)
假设q指向int类型变量 (占4个字节)
假设r指向double类型变量 (占8个字节)
那么p、q、r它们本身所占的字节数是否一样?
这里还得学习一个小知识
sizeof(数据类型)
此运算符功能:返回值就是该数据类型所占的字节数。
sizeof(变量名)
此运算符功能:返回值就是该变量所占的字节数。
# 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;
}
运行结果:
总结:任何类型的指针变量都是占用4个字节。
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关,譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。
#include <stdio.h>
int main(void)
{
int a=1;
char b='a';
float c=1.0;
void *p;
p=&a;
printf("a的地址为:0x%x,其字节数为:%d\n",p,sizeof(p));
p=&b;
printf("b的地址为:0x%x,其字节数为:%d\n",p,sizeof(p));
p=&c;
printf("c的地址为:0x%x,其字节数为:%d\n",p,sizeof(p));
return 0;
}