首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于指针理解的有关问题

2013-07-04 
关于指针理解的问题,求助看书上说C++里所有的指针都是4个字节,作用就是存储一个对象的地址,那么理论上说in

关于指针理解的问题,求助
看书上说C++里所有的指针都是4个字节,作用就是存储一个对象的地址,
那么理论上说

int *p


string *s

在内存中占用的空间是一样的,作用也一样
为什么还要区分指针的数据类型呢?
比如我这样写就报错:
string s1="123";
string *s=&s1;
int *p=s;/*结果报错*/

求解答为什么要区分指针的数据类型
指针 String C c++
[解决办法]
引用:
看书上说C++里所有的指针都是4个字节,作用就是存储一个对象的地址,
那么理论上说
int *p


string *s

在内存中占用的空间是一样的,作用也一样
为什么还要区分指针的数据类型呢?
比如我这样写就报错:
string s1="123";
string *s=&s1;
int *p=s;/*结果报错*/

求解答为什么要区分指针的数据类型



这是编译器帮助你避免发生错误的一种机制,虽然char* 和int* 虽然都是4个字节,但其毕竟指向的数据类型不同,像你代码那样,int *p=s;
那么如果以后 int a=*p;那你就得到错误的值,因此,这是不允许的;

当然,你可以有意的进行强制转换

int *p=(int*)s;那编译器就不会报错,编译器会认为,你是深思熟虑,需要这样做的
[解决办法]
声明指针不是目的,目的是通过指针间接访问它所指向的数据,不区分指针类型,如何知道它指向的数据是什么?

热点排行