如何只通過指標獲取所指內容的大小,只要會看記憶體,就能通過指標找到所指內容的大小。
在網上找了許久都沒有找到答案,都說不能通過指標獲取所指內容的大小,抱著好奇的態度去記憶體中尋找,還真讓我給找到了。我用的是linux。
隨便在堆上new一塊位址;
int *p=new int;
跟內存在p值的基礎上減8位元組,會發現有乙個值為0x00000021;當
int *p=new int[7];
會發現有乙個值位0x00000031;
之後會以陣列增加4為等差增加;
為什麼會這樣呢?
因為對於這個指標來說它會有乙個開始的地方和結束的地方,各佔8位元組;以0x00000021開始,以0x0000f181結束;
總歸一句話:類同於分頁機制;
C C 中const變數與指標所指內容的改變
先看乙個很非常相當基礎的c的 哈 void main 大家先想想這個地方的輸出到底應該是什麼吧!include int main 結果輸出 124502455 8說明 b 8確實有替a所在的位址賦值。我在vs2008下編譯輸出彙編檔案,摘選main函式部分彙編 加上我的理解注釋,如下 b 20 si...
如何通過FILE指標獲取檔名
在tc20中,一旦你成功開啟乙個檔案,他將返回乙個檔案指標。file fp fp fopen abc.dat 檔案狀態 如w,r,r 當上面的操作成功後檔案指標fp就會賦予你開啟檔案的最基本資訊!file結構在turbo c在stdio.h檔案中有以下的檔案型別宣告 typedef struct f...
獲取char指標內容的長度
如果能確定所指變數為字串位址,可以用strlen p 取得字串長度。strlen能返回字串的長度是因為它認為到 0 就是結束的地方 sizeof和記憶體無關,只根據資料型別來判斷,而資料型別的長度和作業系統有關1 char a c temp a.txt n intb strlen a 2 char ...