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

C語言中sizeof 和 strlen的區(qū)別

 更新時間:2024年08月27日 08:59:40   作者:dingdongkk  
sizeof?和?strlen?是兩個常用于 C/C++ 語言中的函數或操作符,本文主要介紹了C語言中sizeof 和 strlen的區(qū)別,具有一定的參考價值,感興趣的可以了解一下

sizeof 和 strlen 是兩個常用于 C/C++ 語言中的函數或操作符,它們在功能和使用場景上有很大區(qū)別。

1. sizeof 操作符

  • 功能:sizeof 是一個編譯時操作符,用于計算數據類型或變量在內存中占用的字節(jié)大小。它可以應用于基本數據類型、數組、結構體以及用戶定義的數據類型。
  • 返回值:返回類型或對象在內存中占用的總字節(jié)數。
  • 作用對象:可以用于所有數據類型,包括基本類型、指針、數組、結構體等。
  • 計算范圍:計算整個數據結構的大小,包括字符數組的末尾空字符 '\0',還會包括填充字節(jié)(對于結構體而言)。
  • 編譯期執(zhí)行:sizeof 在編譯期執(zhí)行,因此不需要在運行時計算其結果。

示例:

#include <stdio.h>

int main() {
    int a = 10;
    char str[] = "Hello";
    
    printf("Size of int: %lu\n", sizeof(a));              // 返回 4(假設int為4字節(jié))
    printf("Size of char array: %lu\n", sizeof(str));     // 返回 6(包括'\0')
    
    return 0;
}

輸出:

Size of int: 4
Size of char array: 6

  • sizeof(a) 計算 int 類型變量 a 所占的內存,返回 4(假設 int 類型在該系統(tǒng)中為 4 字節(jié))。
  • sizeof(str) 返回 char 數組 str 的總大小,包括字符串末尾的 \0(即 6 字節(jié):Hello\0)。

2. strlen 函數

  • 功能:strlen 是用于計算字符串長度的標準庫函數,它計算的是以 '\0' 結尾的字符串中字符的數量。
  • 返回值:返回字符串中的字符數(不包括末尾的空字符 '\0')。
  • 作用對象:只能用于以 '\0' 結尾的 C 字符串,不能用于其他類型(如整數、結構體、數組)。
  • 運行時執(zhí)行:strlen 需要在運行時遍歷字符串來計算其長度,因此是運行時計算的。

示例:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello";
    
    printf("Length of string: %lu\n", strlen(str));      // 返回 5
    
    return 0;
}

輸出:

Length of string: 5

strlen(str) 返回字符串 "Hello" 的長度,不包括終止符 '\0',因此返回 5。

3. sizeof 與 strlen 的主要區(qū)別

特性sizeofstrlen
功能計算數據類型或變量占用的總字節(jié)數計算字符串中字符的長度,不包含 '\0'
作用對象可以作用于任何數據類型僅限于以 '\0' 結尾的字符串
是否包含 \0包含字符串的 '\0'(對 char[] 而言)不包含 '\0'
計算時機編譯時計算運行時計算
返回值返回占用內存的總字節(jié)數返回字符串中的字符數,不包括末尾的 \0
適用范圍基本類型、數組、結構體、指針等僅適用于 C 風格的字符串

4. 對字符串的對比示例

假設我們有如下代碼:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello";
    
    printf("sizeof(str): %lu\n", sizeof(str));     // 6 (包含 '\0')
    printf("strlen(str): %lu\n", strlen(str));     // 5 (不包含 '\0')
    
    return 0;
}

輸出:

sizeof(str): 6
strlen(str): 5

  • sizeof(str) 返回 6,因為 str 是一個包含 \0 的字符數組。
  • strlen(str) 返回 5,因為它只計算字符串 "Hello" 中的字符數,不包括末尾的空字符 \0。

5. 指針與數組的差異

當我們使用指針時,sizeof 的行為會有所不同。例如:

#include <stdio.h>
#include <string.h>

int main() {
    char *str = "Hello";
    
    printf("sizeof(str): %lu\n", sizeof(str));    // 8 (假設指針是 8 字節(jié))
    printf("strlen(str): %lu\n", strlen(str));    // 5 (計算指向的字符串長度)
    
    return 0;
}

輸出:

sizeof(str): 8
strlen(str): 5

  • sizeof(str) 返回 8,因為 str 是一個指針,指針的大小在 64 位系統(tǒng)上通常是 8 字節(jié)。
  • strlen(str) 返回 5,因為它計算的是指針指向的字符串 "Hello" 的長度。

總結

  • sizeof 用于計算數據類型或變量的總內存大小,適用于任何類型(包括數組、指針等)。
  • strlen 專門用于計算以 '\0' 結尾的 C 字符串的長度,只計算字符數,不包括 '\0'。

到此這篇關于C語言中sizeof 和 strlen的區(qū)別的文章就介紹到這了,更多相關C語言 sizeof 和 strlen內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • C++11 lambda表達式在回調函數中的使用方式

    C++11 lambda表達式在回調函數中的使用方式

    這篇文章主要介紹了C++11 lambda表達式在回調函數中的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++用new創(chuàng)建對象和不用new創(chuàng)建對象的區(qū)別解析

    C++用new創(chuàng)建對象和不用new創(chuàng)建對象的區(qū)別解析

    在C++用new創(chuàng)建對象和不用new創(chuàng)建對象是有區(qū)別的,不知你是否清楚的了解它們到底有什么樣的區(qū)別呢?下面小編就用示例來告訴大家吧,需要的朋友可以過來參考下
    2013-07-07
  • c語言程序設計文件操作方法示例(CreateFile和fopen)

    c語言程序設計文件操作方法示例(CreateFile和fopen)

    c主要的文件操作函數有:CreateFile,CloseHandle,ReadFile,WriteFile,SetFilePointer,GetFileSize。其中的讀寫操作是以字符為單位,獲得文件大小也是以字符為單位。
    2013-12-12
  • C語言中getchar和putchar的使用方法詳解

    C語言中getchar和putchar的使用方法詳解

    我們知道scanf函數可以從鍵盤輸入信息,而printf則可以輸出信息,同樣地,getchar和putchar也有同樣的功能,下面我來給大家介紹putchar和getchar的使用方法,需要的朋友可以參考下
    2023-08-08
  • 教你5分鐘輕松搞定內存字節(jié)對齊

    教你5分鐘輕松搞定內存字節(jié)對齊

    隨便google一下,人家就可以跟你解釋的,一大堆的道理,我們沒怎么多時間,討論為何要對齊.直入主題,怎么判斷內存對齊規(guī)則,sizeof的結果怎么來的,請牢記以下3條原則
    2013-09-09
  • C語言實現(xiàn)酒店管理系統(tǒng)

    C語言實現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • ubuntu修改gcc版本的操作方法

    ubuntu修改gcc版本的操作方法

    今天小編就為大家分享一篇ubuntu修改gcc版本的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++ 實現(xiàn)PE文件特征碼識別的步驟

    C++ 實現(xiàn)PE文件特征碼識別的步驟

    PE文件就是我們常說的EXE可執(zhí)行文件,針對文件特征的識別可以清晰的知道該程序是使用何種編程語言實現(xiàn)的,前提是要有特征庫,PE特征識別有多種形式,第一種是靜態(tài)識別,第二種則是動態(tài)識別,我們經常使用的PEID查殼工具是基于靜態(tài)檢測的方法。
    2021-06-06
  • C語言實現(xiàn)靜態(tài)順序表的實例詳解

    C語言實現(xiàn)靜態(tài)順序表的實例詳解

    這篇文章主要介紹了C語言實現(xiàn)靜態(tài)順序表的實例詳解的相關資料,這里提供是幫助大家學習理解這部分內容,需要的朋友可以參考下
    2017-08-08
  • C語言實現(xiàn)圖書管理系統(tǒng)課程設計

    C語言實現(xiàn)圖書管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖書管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論

施甸县| 玉林市| 奉贤区| 西华县| 双辽市| 将乐县| 榆中县| 安平县| 康乐县| 聂荣县| 德庆县| 文化| 泊头市| 玉龙| 连州市| 辽宁省| 北京市| 交城县| 普陀区| 怀远县| 麻阳| 安新县| 通榆县| 卓尼县| 庆云县| 利辛县| 嘉峪关市| 扬州市| 南华县| 高邑县| 五寨县| 阳江市| 邯郸县| 天水市| 岑巩县| 湖南省| 南皮县| 绥棱县| 博白县| 江北区| 松溪县|