string s="123"; string *p=&s; cout << p <<endl;
string s="123"; string *p=&s; cout << p <<endl; 以上输出一个指针的内容,也就是指针存储的地址。 有一个不理解的地方就是,每次我运行程序,输出的内容都是一样的 ,比如‘0012FF34’这种地址, 按我的理解地址不是随机分配的吗,为什么程序每次运行变量s的地址都是一样的呢?
至于每次运行时是不是一样,取决于操作系统。由于线性地址隔离机制,每个进程都运行在一个独立的线性地址空间,地址相同也没什么奇怪的。
cout <<std::hex<< p <<endl;
cout << p <<endl 输出的是指针的“值”,而不是它指向的对象。 换句话说,它输出的是它指向的对象的地址。 字符指针除外,ostream为字符指针进行了重载,以支持C字符串。
64,670
社区成员
250,489
社区内容
加载中
试试用AI创作助手写篇文章吧