乙個指標在32位的計算機上,佔4個位元組;乙個指標在64位的計算機上,佔8個位元組。
指標就是位址,位址就是指標。
擴充套件:
int a = 10;
char b = 'b'
;
short c = 2
;
long d = 9
;
float e = 6.29f
;
double f = 95.0629
;
int arr = ;
char arrb = ;
char str = "
hello";
double *p=&f;
int *i=&a;
nsstring *string = @"
hello world";
//分別對各個變數使用sizeof運算
nslog(@"
int_a=%d,char_b=%d,short_c=%d,long_d=%d,float_e=%d,double_f=%d,arr=%d,arrb=%d,str=%d,strlen=%d,point_p=%d,point_i=%d,point_string=%d",
sizeof(a), sizeof(b), sizeof(c), sizeof(d), sizeof(e), sizeof
(f),
sizeof(arr), sizeof(arrb), sizeof(str), strlen(str), sizeof(p), sizeof(i), sizeof(string));
結果:
int_a=4,char_b=1,short_c=2,long_d=8,float_e=4,double_f=8,arr=12,arrb=3,str=6,strlen=5,point_p=8,point_i=8,point_string=8
sizeof實際上是獲取了資料在記憶體中所占用的儲存空間,以位元組為單位來計數。c語言會自動在在雙引號""括起來的內容的末尾補上"\0"代表結束,ascii中的0號位也占用乙個字元。
int佔4位元組,字元佔1位元組,指標位址佔8個位元組
strlen返回的是儲存在陣列中的字串的長度,sizeof返回的是陣列本身長度,如果沒有宣告陣列大小,即strlen長度+'\0'結尾
問:假如,我們想通過cpu在記憶體中讀取乙個數字3,那麼是怎樣乙個操作呢?
首先,cpu通過位址匯流排,在記憶體中找到數字3的位址;
然後,通過控制匯流排知道該操作是讀還是寫;
然後,通過資料匯流排,把數字3傳輸到cpu中。
c sizeof 物件大小
include using namespace std class base private int a char p class derived public base int main 輸出 base 12 derived 16 然後我們去掉base類中的virtual關鍵字。輸出 base 8...
物件陣列 物件指標 指向物件的指標
1.物件陣列的每乙個元素都是同類的物件 class student private int score int main 三個實參分別傳給陣列的三個建構函式 return 0 2.當資料成員中含有預設引數時 student int 100,int 80,int 90 含有預設引數時 student ...
指標的大小legend
指標的大小 include include using namespace std void main double x a cout 1.無論指標變數指向任何型別的變數它所佔位元組都是4個位元組。因為指標只儲存變數的首位元組的位址。在32位作業系統中,cpu位址匯流排為32,乙個位址匯流排有兩種狀...