1月 17, 2011

reference and lvalue

int num [] = {1,2,3,4};
int *ptr = num;
cout << &(ptr++); /* ERROR: & need l-value */
cout << &(++ptr); /* 正確 */
ptr++ 會把 ptr 的原值塞到一個「暫存變數」之後 ptr 的值再往下一格。所以當使用 &(暫存變數) 要取位址就錯了。

++ptr 則是把 ptr 向下移一格後,去取 ptr 變數的位址,所以編譯可以通過。

沒有留言:

張貼留言