我正在使用指针设置变量值的程序。例如,要将价格设置为19.95,我不会使用变量价格,而是使用指针变量* p_price。使用指针设置变量
下面的代码产生以下:
address of price=0x22fec8
contents of price=19.95
address of *p_price=0x22ffe0
contents of p_price=0x22ffe0
contents of *p_price=19.95
我试图让中间的一个显示p_price的地址,而不是* p_price。但是,将代码更改为显示& p_price会导致程序崩溃,而没有任何指示错误的指示。
应价的地址是& * p_price
和p_price的地址是&价格是多少?
#include <iostream>
#include <iomanip>
#include <random> // needed for Orwell devcpp
using namespace std;
int main(){
float * p_price;
*p_price=19.95;
float price = *p_price;
cout <<"address of price="<<&price<<endl;
cout <<"contents of price="<<price<<endl;
cout <<"address of *p_price="<<&*p_price<<endl;
cout <<"contents of p_price="<<p_price<<endl;
cout <<"contents of *p_price="<<* p_price<<endl;
}
要保留p_price的内容作为地址,我应该声明一个新变量并将p_price设置为等于那个地址? – user3866044 2014-11-22 00:35:21
是的。一个指针只存储一个地址,但是因为vsoftco说有些东西需要存储浮点数... – deviantfan 2014-11-22 00:36:51
是的,或者做'float * p_price = new float;',现在你有一些保留的内存位置,'p_price'点。那么,您可以对其进行解除引用并将'19.95'安全地放入该内存插槽中。 – vsoftco 2014-11-22 00:36:52