精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中strlen和sizeof的區別

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-04-23 09:45 ? 次閱讀

如果你經常刷筆試題,那你一定會刷到這樣的題目:

char str[] = “hello”;
printf(“%d %d
”, sizeof(str), strlen(str));


const char *str = “hello”;
printf(“%d %d
”, sizeof(str), strlen(str));


把 sizeof 和 strlen 放在一起考察,題目不難,只要你的C語言基本功扎實,做出來應該沒問題。

第一個,str是個數組,數組里面的內容是字符串hello。但是需要注意的是,字符串都是以'?'結尾,所以數組實際占6個字節。

sizeof是關鍵字,用于求解類型的長度,sizeof加上數組名,表示數組所占的字節數,所以結果是6。

strlen是字符串處理函數,求解字符串的長度,長度不包含'?',所以結果是5。

第二個,str是指針,指向字符串常量。

sizeof加上指針,表示指針變量占的字節數,32位系統是4字節,64位系統是8字節。至于說字符串長度,跟上面一樣,是5個字節。

這些都算是常見的,我們再來看下不常見的,指針都當作8字節來處理。
int a[] = {1, 2, 3}; 


printf("%ld
",sizeof(&a));
printf("%ld
",sizeof(*a));


intb[2][3]={0};
printf("%ld
",sizeof(b[0]));
printf("%ld
",sizeof(b[0]+1));
printf("%ld
",sizeof(&b[0]));


一個一維數組,&a表示數組的地址,sizeof(&a)是8字節。

*a表示數組第一個元素,sizeof(*a)是4個字節。

對于二維數組,b[0]表示首行首元素地址,類似于一維數組的數組名,sizeof(b[0])就是第一行的長度12字節。

b[0]+1表示首行第二個元素的地址,編譯器當作指針來處理,sizeof(b[0] + 1)是8個字節。

&b[0]表示數組首行地址,編譯器同樣把它當作指針來處理,sizeof(&b[0])也是8字節。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136251
  • 字符串
    +關注

    關注

    1

    文章

    577

    瀏覽量

    20488
  • 函數
    +關注

    關注

    3

    文章

    4308

    瀏覽量

    62449
  • 指針
    +關注

    關注

    1

    文章

    480

    瀏覽量

    70513
  • 數組
    +關注

    關注

    1

    文章

    416

    瀏覽量

    25915

原文標題:strlen和sizeof

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言中void指針的基本認識及典型應用

    C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種類型*類型的。
    發表于 02-01 09:26 ?1063次閱讀

    C語言sizeofstrlen區別

    大家好,我是嵌入式老林,從事嵌入式軟件開發多年,今天分享的內容是C語言sizeofstrlen區別,希望能對你有所幫助
    發表于 07-11 11:51 ?1292次閱讀

    C語言中for循環的用法和應用 C語言中for循環與while循環的區別

    C語言中的循環結構時,for循環是最常用的一種。它允許重復執行一段代碼,直到滿足特定條件為止。
    發表于 08-18 16:33 ?3160次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>for循環的用法和應用 <b class='flag-5'>C</b><b class='flag-5'>語言中</b>for循環與while循環的<b class='flag-5'>區別</b>

    strlensizeof區別

    1.strlen(char*)函數求的是字符串的實際長度,它求得方法是從開始到遇到第一個'\0',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首地址一直找下去,直到遇到'\0'停止。char aa[10];cout
    發表于 02-10 10:44

    【求助】C語言中sizeof使用錯誤

    ();printf("output\n");printf("%d",sizeof('c'));printf("%d",sizeof(string1
    發表于 11-08 11:26

    c語言中double與float的區別 相關資料分享

    c語言中double與float的區別C語言中小數的數據類型為 float 或 double:float 稱為單精度浮點數,double 稱
    發表于 07-01 09:10

    c語言中double與float區別是什么?

    c語言中double與float區別是什么?
    發表于 10-14 07:58

    sizeofstrlen函數的區別在哪

    野指針是指指針指向的位置是不可知的,主要成因是什么?sizeofstrlen函數的區別在哪?鏈表和數組的區別在哪?
    發表于 12-24 07:19

    C語言中的關鍵字

    C語言中的入門教程
    發表于 10-14 16:24 ?3次下載

    C51單片機C語言與標準C語言有什么區別

    一:C51(單片機C語言)與標準C語言區別1、 C
    發表于 10-09 08:00 ?134次下載
    <b class='flag-5'>C</b>51單片機<b class='flag-5'>C</b><b class='flag-5'>語言</b>與標準<b class='flag-5'>C</b><b class='flag-5'>語言</b>有什么<b class='flag-5'>區別</b>?

    sizeofstrlen到底有什么區別經典C語言面試題講解

    基本定義1、sizeofC/C++中的一個運算符,其作用是返回一個對象或者類型在內存中所占用的字節數。 注意:sizeof后面如果是類型則必須加括號,如
    的頭像 發表于 02-03 08:24 ?7231次閱讀

    C語言sizeof操作符基礎和經典問題

    C語言中sizeof是一個操作符(operator),而不是函數!其用于判斷數據類型或者表達式長度(所占的內存字節數)。其有兩種表達形式:
    的頭像 發表于 04-04 17:39 ?2665次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>sizeof</b>操作符基礎和經典問題

    C語言中的char數組和char指針有什么區別

    讓我們通過下面的例子,來了解 C語言中字符數組和字符指針之間的區別
    的頭像 發表于 01-29 16:35 ?2652次閱讀

    嵌入式C語言中堆和棧的區別

    在嵌入式C語言中,堆和棧都是用來存儲變量的內存區域,但它們在存儲和使用變量方面有很大的區別
    的頭像 發表于 04-14 11:45 ?1347次閱讀

    strlensizeof的異同

    1,strlen函數作用:用于計算以空字符'\0'結尾的字符串的長度,即字符串中的字符個數,不包括空字符本身。返回值:strlen返回一個size_t類型的值,表示字符串中字符
    的頭像 發表于 12-13 08:00 ?609次閱讀
    <b class='flag-5'>strlen</b>和<b class='flag-5'>sizeof</b>的異同