~有关指针的有关问题
求助~有关指针的问题
为什么输出的是
34 0
0 34
呢?求解~
------解决方案--------------------
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
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