指针,一定占据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个字节的长度