指向string的指针转换成指向char的指针

2025-02-25 03:21:20
推荐回答(2个)
回答1:

嗯。string是一个类,类成员里除了有这个字符串之外还保存了其他的数据,比如长度。

所以在内存空间中,string并不是单纯的一串字符连续排列,不能直接将指针强制类型转换。

回答2:

这样强制转换是错的,你可以把length改成如下:
int length(string *p)
{
int n=0;
const char* pp=p->data();
while(*pp!='\0')
{
n++;pp++;
}
return n;
}
顺便说一下string实际存储字符串的位置是堆内存,通过一个成员指针指向堆内存,而不是直接放在string对象里的,string对象的大小是固定。所以这种转换是没用的。