我写了一个简单的程序来看看C++如何处理字符串对象的指针(OOP中的新对象),我惊讶地发现那个是string* as
这是分配内存地址string a
,没有存储相当于&a
的值。此外,控制台未将值打印到*as
。这可能是我的最终或系统上的错误,或者在这里错过了一些基本的东西?C++字符串指针与它指向的字符串没有相同的内存地址
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
string a = "asdf";
string* as = &a;
string* as_holder = &a;
int main()
{
cout << "a = " << a << "\t" << "&a = " << &a << " *as = " << *as << endl
<< "as = " << as << endl
<< "++as = " << ++as << endl
<< "*as = " << *as << endl << endl;
return 0;
}
输出:
a = asdf &a = 011ff68C *as =
as = 011FF6A8
++as = 011FF6A8
*as =
请编辑您的问题以包含实际输出。 –
另请注意'++ as'和下面的'* as'会导致未定义的行为。 –
你的问题与你的代码没有关系,因为你没有显示没有给出正确输出的代码区域 – smac89