我有一個數組我怎麼能像這樣訪問它:*A+i*blockSize*dimenson
?這不是轉化爲A[i*blockSize*n]
嗎?使用指針算術訪問二維數組
這怎麼可能如果i*blockSize*n
是一個比n大的數字?我以爲它是有效的,因爲C中的二維數組實際上只是一塊連續的內存。但是,這並不會改變我無法編碼A[i*blockSize*n][j] = something
而沒有發生運行時錯誤的事實。
那麼,爲什麼*A+i*blockSize*dimenson
確定,但不A[i*blockSize*n]
我希望這個問題是有道理的人誰是在C語言的專家..
*如果您將'B'聲明爲指向'A'的單維數組*您將如何做?這個'*(A + i * blockSize * dimenson)'不在公佈的例子中。 –
我剛剛添加括號以清除運算符優先級,這與'* A + i * blockSize * dimenson'的例子相同。我還編輯瞭如何聲明這一點。 – lilezek
這是不一樣的,請閱讀我的答案。 '*'([* dereference operator *](https://cs50.harvard.edu/resources/cppreference.com/operator_precedence.html))在涉及表達式的所有操作符中具有最高優先級。另外,雖然第二部分在技術上是正確的(它可以正常工作),但不存在*將'B'聲明爲一維數組**,將**指向'A' *。 –