返回嘿,我嘗試了一下用C/C++和指針 while reading stuff here增加指針的函數
我自己做了一個函數在某個地方在全局數組的指針返回INT。
int vals[] = { 5, 1, 45 };
int * setValue(int k) {
return &vals[k];
}
但是我能做到這一點
int* j = setValue(0);
j++;
*j = 7;
操縱陣列
但:
*(++setValue(0)) = 42;
din't工作。 然而,請注意*setValue(0) = 42;
作品
從我的理解我調用函數,並獲得一些指針我增加它,使其指向我的數組中的第二個元素。最後,我遵循指針併爲它所指向的整數指定一個新值。
我發現C++指針和引用可能有點混淆,但也許有人可以解釋我這種行爲。
編輯: 這個問題是不是Increment, preincrement and postincrement
重複,因爲它是不是與前,後遞增,而是約上是一個函數的返回指針增量。
EDIT2:
調整功能
int ** setValue(int k) {
int* x = &vals[k];
return &x;
}
您可以使用
*(++(*setValue(1))) = 42;
這顯然不是鏈接的問題的副本。 – mjs
這不是重複的嗎?不應該'j = setValue(0); J ++; * j = 7;'相當於'*(++ setValue(0))= 7;'而不是'*(setValue(0)++)= 7;'(注意前後增量)。 – cpburnz
你是對的,但是既不是'*(++ setValue(0))= 7;'也不是'*(setValue(0)++)= 7;'按照@Eregrith的解釋 你提到的並不是爲了是真正的問題,但它是一個內部的錯誤 – xuma202