目前我正在讀一本關於C指針並沒有在書中,混淆我舉一個例子:內存用C關於指針運算
假設我們有:int arr_of_int[] = {5,10,15};
我們設置:int *add_of_arr = arr_of_int;
那麼我就知道了「add_of_arr
」變量保存的地址:arr_of_int[0];
,讓我們只是假設的「add_of_arr
」的地址是500
現在,如果我做的:「add_of_arr += 3;
」,那麼「add_of_arr」的地址現在是512?這就是我從書中得到的,但是不應該將「add_of_arr
」的地址仍然是500,只有add_of_arr的HELD地址是512?我從書中得到的是,add_of_arr的地址正在改變。這讓我困惑。我認爲這是一個錯誤,但我不確定。
謝謝!
爲什麼你要關心的地址地址?是的,這是明確的,是的,有些情況甚至有用,但你還沒有。特別是,你似乎在討論'int ** add_of_add_of_arr =&add_or_arr'爲500. – MSalters
我很困惑,爲什麼「&add_of_arr」正在改變,而不是「add_of_arr」,但它看起來像一個錯字。 –
正確地閱讀我們的假設是書面的,你是對的,這本書是錯誤的。發現得好!也許你應該得到一本更好,更精確的書。只是:int不保證有4個字節。它可以是1(!)以內的任意大小。另外,如果'addr'的地址(使用更好的名字!)是'500','array'的地址也不能是'500',所以遞增後的值不能是'512'(假設'sizeof(int )== 4U')! – Olaf