国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C語言中的sizeof操作符用法及和strlen的區別

2020-05-23 14:19:15
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C語言中的sizeof操作符用法及和strlen的區別,本文講解了sizeof的定義、sizeof的語法以及使用實例,最后給出sizeof與strlen的區別,需要的朋友可以參考下

一、 定義:

sizeof是C/C++中的一個操作符(operator),簡單的說其作用就是返回一個對象或者類型所占的內存字節數。其返回值類型為size_t,在頭文件stddef.h中定義。在32位系統中:

char的sizeof值為1,char是我們編程能用的最小數據類型。

short的sizeof值為2;

int、float、long為4;

double為8;

所有的指針的sizeof值都為4。

二、語法:

sizeof有三種語法形式,如下:

1) sizeof( object ); // sizeof( 對象 );

2) sizeof( type_name ); // sizeof( 類型 );

) sizeof object; // sizeof 對象;

sizeof( 2 ); // 2的類型為int,所以等價于 sizeof( int );

sizeof( 2 +3.14); // 3.14的類型為double,2也會被提升成double類型,所以等價于 sizeof( double );

三、舉例說明:

 

 
  1. char* ss = "0123456789"
  2. sizeof(ss) 結果 4 ===》ss是指向字符串常量的字符指針 
  3. sizeof(*ss) 結果 1 ===》*ss是第一個字符 
  4. char ss[] = "0123456789"
  5. sizeof(ss) 結果 11 ===》ss是數組,計算到/0位置,因此是10+1 
  6. sizeof(*ss) 結果 1 ===》*ss是第一個字符 
  7. char ss[100] = "0123456789"
  8. sizeof(ss) 結果是100 ===》ss表示在內存中的大小 100×1 
  9. strlen(ss) 結果是10 ===》strlen是個函數內部實現是用一個循環計算到/0為止之前 
  10. int ss[100] = "0123456789"
  11. sizeof(ss) 結果 400 ===》ss表示再內存中的大小 100×4 
  12. strlen(ss) 錯誤 ===》strlen的參數只能是char* 且必須是以''/0''結尾的 
  13. char q[]="abc"
  14. char p[]="a/n"
  15. sizeof(q),sizeof(p),strlen(q),strlen(p); 
  16. 結果是 4 3 3 2  

四、sizeof與strlen的區別:

1.sizeof是算符,strlen是函數。數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,如: fun(char [8])、fun(char []),都等價于 fun(char *) ,所以數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。

2.sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''/0''結尾的。sizeof還可以用函數做參數,比如: short f(); printf("%d/n", sizeof(f()));輸出的結果是sizeof(short),即2。

3.大部分編譯程序 在編譯的時候就把sizeof計算過了 是類型或是變量的長度這就是sizeof(x)可以用來定義數組維數的原因,strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型占內存的大小。

 

 
  1. char str[20]="0123456789"
  2. int a=strlen(str); //a=10; 
  3. int b=sizeof(str); //而b=20; 

4.當適用了于一個結構類型時或變量, sizeof 返回實際的大小, 當適用一靜態地空間數組, sizeof 歸還全部數組的尺寸。 sizeof 操作符不能返回動態地被分派了的數組或外部的數組的尺寸 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泾源县| 汤阴县| 锡林郭勒盟| 咸阳市| 白沙| 清苑县| 囊谦县| 两当县| 肥城市| 敖汉旗| 淅川县| 玛曲县| 蒙自县| 桂东县| 金阳县| 洛阳市| 乐平市| 黄山市| 舒兰市| 宜兴市| 彝良县| 冷水江市| 新昌县| 宁夏| 建平县| 延长县| 申扎县| 巫山县| 偏关县| 安化县| 双柏县| 台安县| 西林县| 获嘉县| 太仆寺旗| 石林| 安化县| 安化县| 丽江市| 景泰县| 阿尔山市|