sizeof(char),sizeof(char*),sizeof(char[4]),

32位系統,地址長度是32位(bit),也就是4Byte; 64位系統,地址長度是64位(bit),也就是8Byte函數

運用1:spa

char a[] = "hello world"; //自動爲末尾加上'/0'
char b[14] = "hello world";
char *p = a;
char *dd = "01234";
NSLog(@"%ld", sizeof(a));
NSLog(@"%ld", sizeof(b));
NSLog(@"%ld", sizeof(p));
NSLog(@"%ld", sizeof(dd)); //dd是指向字符串常量的字符指針
NSLog(@"%ld", sizeof(*dd)); //*dd是第一個字符 (所佔大小由數據類型決定)

答案:
指針

32位機器上運行: 12 14 4 4 1code

64位機器上運行: 12 14 8 8 1orm

運用2:字符串

NSLog(@"%lu,%lu,%lu,%lu",sizeof(char),sizeof(char*),sizeof(char[4]),sizeof((char*)(12)));
NSLog(@"%lu,%lu,%lu,%lu",sizeof(char),sizeof(char*),sizeof(char[0]),sizeof((char*)(12)));

32位機器上運行: 1,4,4,4    64位機器上運行: 1,8,4,8it

32位機器上運行: 1,4,0,4    64位機器上運行: 1,8,0,8class


數據類型所佔字節數:
數據類型

32位和64位下float

相同的:

char --1,   short int -- 2,   int -- 4,  unsingned int  -- 4,   float -- 4, double -- 8 , long long 8,

不一樣的:

32位下:   char* -- 4 , long -- 4  , unsigned long -- 4 

64位下:   char* -- 8 , long -- 8  , unsigned long -- 8


sizeof 和 strlen 簡單的區別:

sizeof是運算符,它計算的是系統分配的空間大小,不是存儲數據的大小

strlen是函數,()裏面必須是字符串指針或者字符串常量,返回的是/0前面的字符個數。

例子

char dd[10] = "01234";
NSLog(@"%ld,%ld", sizeof(dd),strlen(dd));

輸出:10,5

相關文章
相關標籤/搜索