关于指针理解的问题,求助
看书上说C++里所有的指针都是4个字节,作用就是存储一个对象的地址,
那么理论上说
int *p
和
string *s
在内存中占用的空间是一样的,作用也一样
为什么还要区分指针的数据类型呢?
比如我这样写就报错:
string s1="123";
string *s=&s1;
int *p=s;/*结果报错*/
求解答为什么要区分指针的数据类型
指针 String C c++
[解决办法]
这是编译器帮助你避免发生错误的一种机制,虽然char* 和int* 虽然都是4个字节,但其毕竟指向的数据类型不同,像你代码那样,int *p=s;
那么如果以后 int a=*p;那你就得到错误的值,因此,这是不允许的;
当然,你可以有意的进行强制转换
int *p=(int*)s;那编译器就不会报错,编译器会认为,你是深思熟虑,需要这样做的
[解决办法]
声明指针不是目的,目的是通过指针间接访问它所指向的数据,不区分指针类型,如何知道它指向的数据是什么?