嘿偷窺,
我目前正在將一些舊的 C 庫移植到 C#,但在理解包含指標的某段代碼時遇到了一些麻煩。
在 C 方面我不是最好的,所以我可能缺乏一些理解。
這是我正在查看的內容的簡化版本:
unsigned int block[2];
// --- inside a function
unsigned int *block; // only got access to this pointer not the array
unsigned long left, right;
// some math
*block = right; // these lines are the important bit i dont quite get
*block = left;
現在...
我認為到目前為止我得到的是:
- 第一行...
- 取消參考指標
- 將其值設定為
right - 將指標向前移動 1
- 而第二行...
- 取消參考指標
- 將其值設定為
left
現在我無法理解的是最終結果 ( blocks[]) 的樣子。
(遺憾的是不能只是除錯它并看一看 bc 我只是不知道如何使用 lib 二進制檔案來做到這一點......)
如果uint也是相當簡單的left,right但它們都是 ulong,所以可能有某種覆寫繼續嗎?
我有點困惑/迷失在這個...也許你們中一些有更好的 C 知識的人可以幫助我 ^^
uj5u.com熱心網友回復:
這基本上是在做:
block[0] = (unsigned int) right;
block[1] = (unsigned int) left;
并強制轉換unsigned long為unsigned int簡單地丟棄多余的高階位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314989.html
