關於位址運算的一點領悟

2021-06-29 00:43:04 字數 755 閱讀 9464

資料結構課上,老師講到如何得到乙個指標的位址的時候,說到了l+i*sizeof(elemtype)和l+i,課上老師說改用前者。我回到宿舍用vs2013實驗了一下,**如下:

#includeusing namespace std;

void main()

; int *p = m;

cout << "&m[1]:" << &m[1] << endl;

cout << "p+1*sizeof(int):" << p + 1 * sizeof(int) << endl;

cout << "p+1:" << p + 1 << endl;

cout << "p:" << p << endl;

}

得到的結果是與老師相反的,結果如下:

p+1的位址和m[1]的位址一樣,而p+1*sizeof(int)的位址是錯的。剛開始以為老師錯了,

後來發現其實l+i*sizeof(elemtype)是對的,只不過在vs中,當你定義乙個資料時,電

腦自己把

資料型別記下了,並且自己在編譯的時候會認為加一就是加乙個資料型別的長

度。所以p+1就是理論上的p+1*(sizeof(int))。從結果的截圖上看,p+1比p位址大4

位元組,而p+1*(sizeof(int))比p大了4*4=16位元組,剛剛好是4個位元組的長度。

關於快速選擇演算法,自己的一點小領悟

快速排序演算法思想 快速排序是找出乙個元素 理論上可以隨便找乙個 作為基準 pivot 然後對陣列進行分割槽操作,使基準左邊元素的值都不大於基準值,基準右邊的元素值都不小於基準值,如此作為基準的元素調整到排序後的正確位置。遞迴快速排序,將其他n 1個元素也調整到排序後的正確位置。最後每個元素都是在排...

對iOS中block的一點領悟

看之前可以先做一下這個測試題目 如果都不能難倒你,那麼下面的你也不用看了。在objective c語言中,一共有3種型別的block nsconcreteglobalblock 全域性的靜態block,不會訪問任何外部變數。nsconcretestackblock 儲存在棧中的block,當函式返回...

關於位運算一點記錄 java

最近在看bitset原始碼,是乙個求乙個演算法題 在乙個元素為 1 到 100 的整數陣列中,如何搜尋缺失元素 在其中的一種解法裡推薦使用bitset,利用long型別中的每一位代表一種狀態,標識這個位的數字是否存在。在看到原始碼 public void set int bitindex 當biti...