因此,例如我有一個char **數組有3個指針。 比方說:在C中,如何更改指針指向的內存地址?
array[0] has abc (points to "a", which lives in address 0x80033de0)
array[1] has def (points to "d", which lives in address 0x80033d)
array[2] has NULL
假設我抄陣列的串到不同的不同的存儲位置,讓我們說
0x7ffffff8 has abc (points to "a")
0x7ffffffc has def (points to "d")
我怎樣才能改變陣列[0],使其指向0x7ffffff8而不是0x80033de0?
還array [1],以便它指向0x7ffffffc而不是0x80033d?
我已經嘗試過不同種類的鑄造,但一直未能得到它的工作。
編輯:
感謝您看我的問題的每個人。我問這個的原因是因爲我正在使用內核,我需要將參數從內核空間複製到用戶空間。我認爲我可以通過將arg字符串複製到用戶空間,然後更改原始args指針指向內核空間的內存地址。我想這不是一個好主意。
你試過了什麼?你應該可以做'array [0] =(char *)0x7FFFFFF8' – slugonamission
「我已經嘗試過不同類型的轉換,但一直無法使它工作。」 - 然後向我們展示代碼和錯誤。 – millimoose
你究竟在做什麼?你想有一個'char **'的深層副本嗎?你想擁有複製感知結構嗎?請多說明一點。 –