小白关于c++string的疑问

string str;
string * p=str.begin();
为什么不能把string的首地址给一个指向string的指针?
那么应该怎么写可以取到指向string首地址的string*类型的指针??

str.begin()得到的是指向字符串开头的Iterator
要得到地址的话,直接取地址不就好了?
string str;
string *p = &str;

str.begin()得到的是一个迭代器跟string*不是同一个类型
要得到地址直接取地址就ok,如楼上所言。

c++类型检查十分严格,str.begin()的类型是迭代器不是string*类型。一般把变量转换成指针都是取地址