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

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

 更新時(shí)間:2023年06月01日 09:32:26   作者:XXJ不會(huì)寫代碼  
這篇文章主要介紹了C語言中sizeof和strlen的區(qū)別,文中有通過代碼示例和相關(guān)例題給大家介紹的非常詳細(xì),需要的朋友可以參考下

一.sizeof和strlen的主要區(qū)別

1.sizeof 是運(yùn)算符,而strlen 是C語言庫函數(shù)中的一個(gè)函數(shù)(使用時(shí)包含頭文件(string.h));

對于sizeof來說,使用時(shí)不加()也是正確的,這樣也可以說明sizeof不是函數(shù)

2.sizeof 操作符用于計(jì)算變量或類型的大小,一般單位為字節(jié),通常用于計(jì)算內(nèi)存大小。

3.strlen是計(jì)算字符串長度的,遇到\0結(jié)束,返回不包括\0,即如果沒有\(zhòng)0則會(huì)計(jì)算出隨機(jī)值;

二.sizeof和strlen分別講解(含例題和詳解)

1.sizeof

在計(jì)算字符型數(shù)組時(shí)(例題+講解)

如代碼:char  arr1 []="hello bite!"  因?yàn)樽址┪矔?huì)自動(dòng)添加\0作為結(jié)束標(biāo)志 所以這個(gè)字符串實(shí)際是 “hello  bite!\0” 其中一個(gè)字符占一個(gè)字節(jié),空格和\0也各占一個(gè)字節(jié) 一共就是12個(gè)字節(jié);

代碼:

int main()
{
	char arr[] = "hello bite!";
	int ret = sizeof(arr);
	printf("%d\n",ret);
	return 0;
}

運(yùn)行結(jié)果是:

計(jì)算整型數(shù)組(例題+講解)

如代碼:int arr2 [5]={0};因?yàn)槭钦停砸粋€(gè)元素占4個(gè)字節(jié)(一個(gè)整型所占大?。?;數(shù)組大小就是   元素個(gè)數(shù)×4   即arr2所占大小是5×4=20個(gè)字節(jié)

代碼:

 
int main()
{
	int arr[5] = { 0 };
	int ret=sizeof(arr);
	printf("arr所占內(nèi)存大小為:%d字節(jié)\n",ret);
	return 0;
}

運(yùn)行結(jié)果:

2.strlen

3.strlen是計(jì)算字符串長度的,遇到\0結(jié)束,返回不包括\0,即如果沒有\(zhòng)0則會(huì)計(jì)算出隨機(jī)值;

例子一(講解)

char arr[]="abcdefg";   實(shí)際字符串內(nèi)容為 "abcdefg\0" 即strlen所計(jì)算的是\0之前的"abcdefg",即算出字符串長度為7個(gè)字符;

#include <string.h>
int main()
{
	char arr[] = "abcdefg";
	int len = strlen(arr);
	printf("字符串長度為:%d個(gè)字符\n",len);
	return 0;
}

運(yùn)行結(jié)果:

例子二(講解)

char arr[]={ 'a' , 'b' , 'c', 'd' , 'e' , 'f' , 'g' };  該字符數(shù)組中放入的是 a b c d e f g 這7個(gè)字符;因?yàn)椴皇亲址?,所以末尾沒有\(zhòng)0;沒有\(zhòng)0,當(dāng)使用strlen函數(shù)進(jìn)行計(jì)算是就不知道在哪里結(jié)束;計(jì)算結(jié)果就是我們想不到的隨機(jī)值(如下面的運(yùn)行結(jié)果14028835)意思是當(dāng)使用strlen函數(shù)進(jìn)行計(jì)算時(shí),當(dāng)計(jì)算完arr數(shù)組時(shí),因?yàn)闆]遇到\0,所以還要繼續(xù)往后計(jì)算,(這里直到計(jì)算了14028835個(gè)字符后)才遇到\0結(jié)束;

代碼:

#include <string.h>
int main()
{
	char arr[] = { 'a','b','c','d','e','f','g' };
	int len = strlen(arr);
	printf("arr的長度為:%d字符\n");
	return 0;
}

運(yùn)行結(jié)果:

三.典型例題

例1

答案解析:

str字符數(shù)組使用"hello bit"初始化,最終也會(huì)將'\0'放置到數(shù)組中,因此數(shù)組中總共有10個(gè)元素

sizeof(str):獲取數(shù)組的總大小,10個(gè)元素,每個(gè)元素占1個(gè)字節(jié),因此總共是10個(gè)字節(jié)

strlen(str): 獲取字符串中有效字符的個(gè)數(shù),不算'\0',因此總共9個(gè)有效字符

故上述printf會(huì)分別打?。?0  9

因此,選擇A

例2

答案解析:

對于int arr[] = {1,2,(3,4),5}數(shù)組,里面總共有4個(gè)元素,(3,4)為逗號表達(dá)式,取后者,因此數(shù)組中元素分別為:1,2,4,5

而sizeof(arr)求的是整個(gè)數(shù)組所占空間的大小,即:4*sizeof(int)=4*4=16

因此,選擇B

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

相關(guān)文章

  • Qt中多線程QThread、QThreadPool、QConCurrent三種方式對比分析

    Qt中多線程QThread、QThreadPool、QConCurrent三種方式對比分析

    QThread是Qt多線程的基石,本質(zhì)上是對操作系統(tǒng)原生線程的面向?qū)ο蠓庋b,本文介紹Qt中多線程QThread、QThreadPool、QConCurrent三種方式對比分析,感興趣的朋友一起看看吧
    2026-05-05
  • C++實(shí)現(xiàn)雙向鏈表

    C++實(shí)現(xiàn)雙向鏈表

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++?Boost?Spirit精通教程

    C++?Boost?Spirit精通教程

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C++堆(Heap)與棧(Stack)內(nèi)存詳解

    C++堆(Heap)與棧(Stack)內(nèi)存詳解

    這篇文章主要介紹了C++堆(Heap)與棧(Stack)內(nèi)存詳解,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-05-05
  • C語言中打印特殊圖案的實(shí)現(xiàn)代碼

    C語言中打印特殊圖案的實(shí)現(xiàn)代碼

    以下代碼實(shí)現(xiàn)了在C語言中打印特殊圖案的解決方法。需要的朋友參考下
    2013-05-05
  • C/C++?Qt數(shù)據(jù)庫SqlRelationalTable關(guān)聯(lián)表詳解

    C/C++?Qt數(shù)據(jù)庫SqlRelationalTable關(guān)聯(lián)表詳解

    這篇文章主要介紹了QT中SqlRelationalTable關(guān)聯(lián)表組件的使用,文中代碼對我們的學(xué)習(xí)和工作具有一定價(jià)值,感興趣的朋友可以了解一下
    2021-12-12
  • 在編程語言中怎樣定義隊(duì)列及其使用(C++)

    在編程語言中怎樣定義隊(duì)列及其使用(C++)

    這篇文章主要介紹了在編程語言中怎樣定義隊(duì)列,本文主要根據(jù)c++來介紹,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • C語言volatile關(guān)鍵字的作用與示例

    C語言volatile關(guān)鍵字的作用與示例

    這篇文章主要介紹了C語言volatile關(guān)鍵字的作用,volatile提醒編譯器它后面所定義的變量隨時(shí)都有可能改變,因此編譯后的程序每次需要存儲(chǔ)或讀取這個(gè)變量的時(shí)候,都會(huì)直接從變量地址中讀取數(shù)據(jù)
    2023-04-04
  • 一文詳解Qt的QObject類

    一文詳解Qt的QObject類

    Qt的QObject類是Qt框架中的基類,它是所有Qt對象的父類,本文主要介紹了Qt的QObject類,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • C++使用模板實(shí)現(xiàn)單鏈表

    C++使用模板實(shí)現(xiàn)單鏈表

    這篇文章主要為大家詳細(xì)介紹了C++使用模板實(shí)現(xiàn)單鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

沭阳县| 道真| 隆化县| 深圳市| 海淀区| 延川县| 华池县| 札达县| 湘阴县| 卫辉市| 称多县| 泽普县| 甘德县| 鸡西市| 西城区| 修文县| 石楼县| 新宁县| 徐水县| 中江县| 隆尧县| 石泉县| 临城县| 岱山县| 资溪县| 青川县| 顺平县| 阿合奇县| 循化| 菏泽市| 田林县| 富民县| 沿河| 乌鲁木齐市| 靖远县| 赤壁市| 女性| 读书| 务川| 会泽县| 庆云县|