2014-02-18 51 views
0
char *data // Points to some memory having 001E 038CD 0923 8723 

我的意圖是在內存中將值03更改爲02,但不想對數據指針執行任何操作。有沒有辦法通過直接訪問來改變內存中的值?

我認爲將數據複製到另一個變量(data1)並對其進行編輯。

除了通過遞增指針直接更改值之外,是否有任何方法更改值?

*(data1+ PARAMETER_COUNT_POSITION) = SOmeValue; 
+1

'*(數據+ PARAMETER_COUNT_POSITION)''離開不變data'。數據指針不增加。 –

+5

'data [3] = 2'有什麼問題?我們很高興努力解決問題,但是我沒有看到這個問題,你能否詳細說明一下? –

+2

你還會怎樣改變一個值?我唯一能想到的就是使用數組索引('data1 [PARAMETER_COUNT_POSITION] = SomeValue'),但它與指針解引用完全一樣,只是一種不同的語法。 –

回答

4

你已經在做了正確:

*(data1 + PARAMETER_COUNT_POSITION) = SomeValue; 

或:

data1[PARAMETER_COUNT_POSITION] = SomeValue; 

或:

PARAMETER_COUNT_POSITION[data1] = SomeValue; // trollolol 

這些都是等價的,他們沒有改變價值data1本身。

,如果你這樣做這隻會發生:

data1 += PARAMETER_COUNT_POSITION; 
*data1 = SomeValue; 
相關問題