指標大小sizeof與引用大小的問題

2021-07-24 17:55:56 字數 918 閱讀 7409

存放乙個位址需要幾個位元組?答案是和乙個 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是操作符而不是函式,作用是判斷資料型別或著表示式長度,位元組數的計算在程式的編譯時進行,而不是在...