最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年07月09日 10:58:55   投稿:junjie  
這篇文章主要介紹了C語言中的sizeof操作符用法及和strlen的區(qū)別,本文講解了sizeof的定義、sizeof的語法以及使用實例,最后給出sizeof與strlen的區(qū)別,需要的朋友可以參考下

一、 定義:

  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+1
sizeof(*ss) 結果 1 ===》*ss是第一個字符
char ss[100] = "0123456789";
sizeof(ss) 結果是100 ===》ss表示在內存中的大小 100×1
strlen(ss) 結果是10 ===》strlen是個函數(shù)內部實現(xiàn)是用一個循環(huán)計算到\0為止之前
int ss[100] = "0123456789";
sizeof(ss) 結果 400 ===》ss表示再內存中的大小 100×4
strlen(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ù)組的尺寸 。

相關文章

  • C++虛函數(shù)表實例分析

    C++虛函數(shù)表實例分析

    這篇文章主要介紹了C++虛函數(shù)表,對多態(tài)中用到的虛函數(shù)表進行了比較通俗的實例分析,需要的朋友可以參考下
    2014-09-09
  • C語言實現(xiàn)簡單學生信息管理系統(tǒng)

    C語言實現(xiàn)簡單學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解C++ 多態(tài)的實現(xiàn)及原理

    詳解C++ 多態(tài)的實現(xiàn)及原理

    這篇文章主要介紹了C++ 多態(tài)的實現(xiàn)及原理,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • VSCode斷點調試CMake工程項目的實現(xiàn)步驟

    VSCode斷點調試CMake工程項目的實現(xiàn)步驟

    這篇文章主要介紹了VSCode斷點調試CMake工程項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • c++ *運算符重載

    c++ *運算符重載

    運算符重載重載運算符是C++ 的一個重要特性,使用運算符重載, 的一個重要特性,使用運算符重載, 重載運算符是程序員可以把C++ 運算符的定義擴展到運算分量是對象
    2014-09-09
  • C++線程間的互斥和通信場景分析

    C++線程間的互斥和通信場景分析

    很多朋友對C++線程間的互斥和通信知識掌握不是多牢靠,今天小編通過模擬車站賣票應用場景給大家詳細解析C++線程間的互斥和通信知識,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • C++讀寫ini配置文件實現(xiàn)過程詳解

    C++讀寫ini配置文件實現(xiàn)過程詳解

    這篇文章主要介紹了C++讀寫ini配置文件實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 樹存儲結構的幾種表示方法

    樹存儲結構的幾種表示方法

    今天小編就為大家分享一篇關于樹存儲結構的幾種表示方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • QTimer與QTime實現(xiàn)電子時鐘

    QTimer與QTime實現(xiàn)電子時鐘

    這篇文章主要為大家詳細介紹了QTimer與QTime實現(xiàn)電子時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 如何利用tinyxml操縱xml及注意問題

    如何利用tinyxml操縱xml及注意問題

    這篇博客,我們詳細講述如何利用tinyxml操縱xml。以及在操作的過程中,我們應該注意的問題
    2013-01-01

最新評論

略阳县| 富宁县| 丹东市| 亚东县| 民县| 邢台市| 凯里市| 天全县| 广宗县| 密山市| 类乌齐县| 垣曲县| 天峻县| 云和县| 江门市| 东台市| 九寨沟县| 正蓝旗| 商水县| 韶山市| 华池县| 桐城市| 静海县| 龙南县| 太仓市| 秦皇岛市| 江北区| 裕民县| 宜都市| 成武县| 乌恰县| 武威市| 麻江县| 莱阳市| 壶关县| 光山县| 庆城县| 乐平市| 苏尼特右旗| 平南县| 金乡县|