C++:指针/以及char指针的打印特殊性

指针,一定占据4个字节

先说指针类型转换,下面演示将一个int类型的指针转换成char类型的指针

int main()
{
	int a = 1;
	char *p = (char*)&a;
	std::cout << &a <<"\n";
	std::cout << p << "\n";
}

上面的代码第二次打印的时候会打印出乱码,对于char类型的指针来说,打印的时候会以’\0’结束,但是指针是没有’\0’的,所以乱码,此时应该将上面的代码再次转换成void类型的指针,如下

int main()
{
	int a = 1;
	char *p = (char*)&a;
	std::cout << &a <<"\n";
	std::cout << (void*)p << "\n";
}

这样两次打印的地址就是相同的了

为指针区分不同的类型,意义在于从一个变量的首地址读取数据的时候,具体读多长。比如一个CPU可以根据该指针是int类型,那么就读取4个字节的长度,如果是char类型,就读取1个字节的长度

发布了157 篇原创文章 · 获赞 26 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/u011624903/article/details/104023497