一个指针变量占几个字节

转自: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;
}

运行结果:

image

总结:任何类型的指针变量都是占用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;
}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值