存放乙個位址需要幾個位元組?答案是和乙個 int 型別的大小相同:4位元組。
所以,若有:
int* pint;
char* pchar;
bool* pbool;
float* pfloat;
double* pdouble;
則: sizeof(pint)、sizeof(pchar)、sizeof(pbool)、sizeof(pfloat)、sizeof(pdouble)的值全部為:4。
但是引用的sizeof為所引用的物件在記憶體中分配空間的大小(單位位元組);
附:sizeof和strlen的區別
❀第乙個例子:
char* ss = "0123456789";
1、sizeof(ss)的結果是4,ss是指向字串常量的字元指標
2、sizeof(*ss)的結果是1,*ss是第乙個字元
❀第二個例子:
char ss = "01233456789";
1、sizeof(ss)結果是11,ss是陣列,計算到'\0'的位置,因此是10+1
2、sizeof(*ss)結果是1,*ss是第乙個字元
❀第三個例子
char ss[100] = "0123456789";
1、sizeof(ss)的結果是100,ss表示在記憶體中預分配的大小:100*1
2、strlen(ss)的結果是10,它的內部實現是用乙個迴圈計算字串的長度,直到'\0'為止。
❀第四個例子
int ss[100] = "0123456789";
1、sizeof(ss)的結果是400,ss表示在記憶體中的大小,為100*4
2、strlen(ss)錯誤,strlen的引數只能是char*,且必須是以'\0'結尾的。
後續補引用的
指標的大小 sizeof問題
原文在此 指標的大小是問 乙個指標變數占用多少記憶體空間?分析 既然指標只是要儲存另乙個變數的位址,注意,是存放一變數的位址,而不是存放乙個變數本身,所以,不管指標指向什麼型別的變數,它的大小總是固定的 只要能放得下乙個位址就行!這是一間只有菸盒大小的 房間 因為它只需要入一張與著位址的紙條 所以,...
指標的大小 sizeof問題
指標的大小是問 乙個指標變數占用多少記憶體空間?分析 既然指標只是要儲存另乙個變數的位址,注意,是存放一變數的位址,而不是存放乙個變數本身,所以,不管指標指向什麼型別的變數,它的大小總是固定的 只要能放得下乙個位址就行!這是一間只有菸盒大小的 房間 因為它只需要入一張與著位址的紙條 所以,若有 in...
sizeof與類的大小
1.當類中沒有虛函式也沒有成員變數的時候,這個類是乙個空類,但是sizeof空類物件的大小,並不是為0,而是為1,即預設空類是有乙個佔位符的。例如 class a sizeof a 1 注意 sizeof是操作符而不是函式,作用是判斷資料型別或著表示式長度,位元組數的計算在程式的編譯時進行,而不是在...