求助~有关指针的问题double* pdata(nullptr)double data[5] {1,23,34}pdata &data[2]cout data[
求助~有关指针的问题
double* pdata(nullptr);
double data[5] = {1,23,34};
pdata = &data[2];
cout << data[2] << " " << data[3] << endl;
cout << *pdata << " " << *(pdata++) << endl;
为什么输出的是
34 0
0 34
呢?求解~ c++
[解决办法]
cout<< 是调用了 cout对象的 operator<< 函数
可以转换为这个形式 operator<< (operator<<(cout, *pdata), *pdata++) //
这里 operator<<的参数operator<<(cout, *pdata)先求值还是 参数*pdata++先求值是不明确的
然后 不同的求值顺序又会导致不同的结果
[解决办法]
倒也不至于匪夷所思
只要 operator<< (operator<<(cout, *pdata), *pdata++)
这里参数*pdata++先求值 得到的是第3个元素的值
然后是operator<<(cout, *pdata)的求值
这时候 已经完成了++操作 pdata指向第4个元素
那么结果就会是 0 34
