p指针置为NULL ,为什么还能求出p指向内存的长度?
难道指针即使置为NULL,还和那块内存有关系?
难道指针即使置为NULL,还和那块内存有关系?
2016-11-30
要这么理解,
假设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;来测试类的大小;
举报