为了账号安全,请及时绑定邮箱和手机立即绑定

p指针置为NULL ,为什么还能求出p指向内存的长度?

难道指针即使置为NULL,还和那块内存有关系?

正在回答

4 回答

int a;

难道int会因为a等于0还是1改变长度?

0 回复 有任何疑惑可以回复我~

要这么理解,

假设int a=4;

int *p=&a;

当我们用cout<<p<<endl;来输出的时候,输出的是8位十六进制(我的电脑64位的),也就是地址,

不管你的指针是int型还是double型抑或是指向对象,返回值都是地址,也不管你这个指针有没有指向,

都是返回地址,用sizeof(p)测出来的就是指针的字节数

当用cout<<*p<<endl;这时输出的才是指向的内容,sizeof(*p)则返回int的大小——也就是字节数

(不同位数的电脑显示会有差异);

还有一点要注意,当指针p指向类时(也就是视频中的指法),cout<<*p<<endl;这样输出的话,编译器

会报错,但是可以cout<<sizeof(*p)<<endl;来测试类的大小;

0 回复 有任何疑惑可以回复我~

是的。

p既然是个指针变量,那么定义了它之后,系统就会为它分配4字节。而不会管它指向那里。

1 回复 有任何疑惑可以回复我~

指针长度和系统有关 一般是4


0 回复 有任何疑惑可以回复我~
#1

anyingxunlin 提问者

系统已经定了指针的长度,不会因为指针置NULL改变?
2016-11-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70918    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

p指针置为NULL ,为什么还能求出p指向内存的长度?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信