我遇到的一個問題是試圖將變量轉換到內存中,以便稍後訪問。帶指針鑄造的局部變量
我這裏有一個例子代碼,完美的作品:
unsigned int *label = (unsigned int *)malloc(sizeof(unsigned int));
label = (unsigned int *) 0xFFAAFFAA;
在別的地方在我的代碼可以訪問此值的標籤,這將指向0xFFAAFFAA作爲它的值,當我嘗試打印。
但是,如果我嘗試從一個變量賦值像這樣:
//all of this is inside a method.. so any variables declared would be local
unsigned int localVariable = 0xFFFFFFFF;
unsigned int *label = (unsigned int *)malloc(sizeof(unsigned int));
label = &localVariable;
其結果將是什麼發瘋似的:0x7f252d6b5f00 ..這,我只是假設是在內存的隨機地址。我知道這個問題是因爲一個局部變量,因爲它在一個函數內運行,而不是全局的。但我不明白這會是什麼語法......
我想定義局部變量的原因是因爲有該函數中的其他邏輯來添加和減去該變量..我離開了它保持最小限度
編輯:所以我可以做這樣的事情?
unsigned int localVariable = 0xFFFFFFFF;
unsigned int *label = (unsigned int *)malloc(sizeof(unsigned int));
*label = localVariable;
你想在這裏做什麼? 'label =(unsigned int *)0xFFAAFFAA;'簡單地覆蓋指針本身。 –
@OliverCharlesworth嗨奧利弗,織補。基本上所有我試圖做的是創建一個新的無符號..執行一些邏輯,如減去和添加,然後將其值分配給一個指針 –
,因爲我似乎無法移位或做任何類型的這些操作一個無符號的int指針..所以我需要做一個正常的值,然後複製它 –