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

首頁 > 編程 > C > 正文

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

2020-01-26 15:02:53
字體:
來源:轉載
供稿:網(wǎng)友

一、 定義:

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

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

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 );
 
三、舉例說明:

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

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

2.sizeof可以用類型做參數(shù),strlen只能用char*做參數(shù),且必須是以''/0''結尾的。sizeof還可以用函數(shù)做參數(shù),比如: short f();  printf("%d/n", sizeof(f()));輸出的結果是sizeof(short),即2。
 
3.大部分編譯程序 在編譯的時候就把sizeof計算過了 是類型或是變量的長度這就是sizeof(x)可以用來定義數(shù)組維數(shù)的原因,strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型占內存的大小。

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


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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 林口县| 白城市| 农安县| 通化市| 阜南县| 平山县| 康平县| 金溪县| 富顺县| 德安县| 宣汉县| 白朗县| 恩施市| 沁源县| 涟源市| 北海市| 托里县| 奉化市| 利川市| 乌恰县| 三都| 靖宇县| 滕州市| 定州市| 阿尔山市| 崇州市| 右玉县| 卓资县| 湖口县| 周宁县| 黄陵县| 崇文区| 天等县| 买车| 上思县| 磐安县| 肥西县| 措美县| 兰溪市| 锡林浩特市| 屯门区|