iOS物件指標大小

2022-06-28 10:39:12 字數 1297 閱讀 7122

乙個指標在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,乙個位址匯流排有兩種狀...