欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言中的strlen()和sizeof()對(duì)比分析

 更新時(shí)間:2023年03月07日 09:23:20   作者:qq_44976409  
這篇文章主要介紹了C語(yǔ)言中的strlen()和sizeof()區(qū)別對(duì)比,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

C語(yǔ)言中的strlen()和sizeof()對(duì)比

在C語(yǔ)言中,沒(méi)有字符串這種變量類(lèi)型,一般用兩種方法實(shí)現(xiàn)。
一是用雙引號(hào)生成常量字符串再賦值給一個(gè)指針,指針指向的是該常量字符串的首字符地址;
二是利用字符數(shù)組,把字符存儲(chǔ)在數(shù)組中。值得注意的是,利用字符數(shù)組創(chuàng)建字符串的時(shí)候記得把’\0’存進(jìn)去(‘\0’本身是一個(gè)字符,占一個(gè)字節(jié)),因?yàn)楹芏鄬?duì)字符進(jìn)行操作的庫(kù)函數(shù)或多或少都跟’\0’有關(guān)系,或者說(shuō)’\0’是字符串結(jié)束的官方標(biāo)志。

字符串
char arr[]={'a','a','a','a','a','a'}
char *str = "aaaaaa"

定義:
**1. strlen函數(shù):**計(jì)算的是字符串str的長(zhǎng)度,從字符的首地址開(kāi)始遍歷,以 ‘\0’ 為結(jié)束標(biāo)志,然后將計(jì)算的長(zhǎng)度返回,計(jì)算的長(zhǎng)度并不包含’\0’。

當(dāng)我們遇到“\0"時(shí)我們就要停止讀取,此時(shí)“\0"前字符的個(gè)數(shù)就是字符串的長(zhǎng)度,注意:這里的“\0"只是結(jié)束標(biāo)志,僅僅告訴我們strlen函數(shù)讀取到這里就要停止了,“\0"不算做一個(gè)字符!?。?/p>

**2. sizeof函數(shù):**相比strlen函數(shù),sizeof就簡(jiǎn)單多了,sizeof其實(shí)就是一個(gè)運(yùn)算符,主要用來(lái)計(jì)算所占空間字節(jié)的大小。

指針字節(jié):
指針 16位 2個(gè)字節(jié)
指針 32位 4個(gè)字節(jié)
指針 64位 8個(gè)字節(jié)

32位系統(tǒng):
char 1個(gè)字節(jié)
short 2個(gè)字節(jié)
int 2個(gè)字節(jié)
long 4個(gè)字節(jié)
char* 4個(gè)字節(jié)
int* 4個(gè)字節(jié)
int** 4個(gè)字節(jié)

64位系統(tǒng):
char 1個(gè)字節(jié)
short 2個(gè)字節(jié)
int 4個(gè)字節(jié)(x 2)
long 8個(gè)字節(jié)(x 2)
char* 4個(gè)字節(jié)
int* 4個(gè)字節(jié)
int** 4個(gè)字節(jié)

  • 字符串常量放在靜態(tài)存儲(chǔ)區(qū),為只讀,不能再通過(guò)指針修改,例如chr *p=“xiaolong”
  • strlen遇到\0結(jié)束,長(zhǎng)度不包括\0
  • sizeof計(jì)算占用多少字節(jié)時(shí),\0也包含在內(nèi)

1. strlen()

int main () {
	
	char *str="xiaolong";
	printf("%d\n",strlen(str));
	return 0;	
}

輸出:8
#include <stdio.h>
#include <string.h>
int main () {
	
	char str[]="xiaolong";
	printf("%d\n",strlen(str));
	return 0;	
}
輸出:8
#include <string.h>
int main () {
	
	char str[10]="xiaolong";
	printf("%d\n",strlen(str));
	return 0;	
}

雖然數(shù)組大小是10,但是編譯器自動(dòng)在xiaolong后面添加了\0 ,因此長(zhǎng)度不是10而是8
輸出:8

2. sizeof()

#include <stdio.h>
#include <string.h>
int main () {
	
	char str[10]="xiaolong";
	printf("%d\n",sizeof(str));
	return 0;	
}

指定大小為n的char數(shù)組無(wú)論如何都是占用n個(gè)字節(jié),例如此處10字節(jié)
輸出:10
#include <stdio.h>
#include <string.h>
int main () {
	
	char *str="xiaolong";
	printf("%d\n",sizeof(str));
	return 0;	
}

由于是指針,32位機(jī)器指針占4個(gè)字節(jié)
輸出:4
#include <stdio.h>
#include <string.h>
int main () {
	
	char str[]="xiaolong";
	printf("%d\n",sizeof(str));
	return 0;	
}

結(jié)果不是8而是9,因?yàn)槟J(rèn)在后面添加了一個(gè)\0,  \0也算一個(gè)字節(jié)
輸出:9

1.size_t 的定義
size_t是一種機(jī)器相關(guān)的無(wú)符號(hào)類(lèi)型,它被設(shè)計(jì)的足夠大以便能表示內(nèi)存中任意對(duì)象的大小。
在C語(yǔ)言中頭文件為stddef.h,在C++語(yǔ)言中頭文件為cstddef。
size_t 是sizeof的返回類(lèi)型,在64位中是unsigned long int,在32位中是unsigned int。
2.使用
size_t類(lèi)型通常用于循環(huán)、數(shù)組索引、大小的存儲(chǔ)和地址運(yùn)算。數(shù)組的下標(biāo)通常定義為size_t類(lèi)型。size_t可以跨平臺(tái),并且具有高代碼的可移植性、有效性或者可讀性。

參考資料:https://blog.csdn.net/shenlong1356/article/details/106321092/

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

相關(guān)文章

  • QT已有項(xiàng)目導(dǎo)入工程時(shí)注意事項(xiàng)圖文詳解

    QT已有項(xiàng)目導(dǎo)入工程時(shí)注意事項(xiàng)圖文詳解

    QT開(kāi)發(fā)這幾年大大小小項(xiàng)目做了不少,花了點(diǎn)時(shí)間對(duì)知識(shí)點(diǎn)總結(jié)整合了一部分,下面這篇文章主要給大家介紹了關(guān)于QT已有項(xiàng)目導(dǎo)入工程時(shí)注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • C++ LeetCode1832題解判斷句子是否為全字母句

    C++ LeetCode1832題解判斷句子是否為全字母句

    這篇文章主要為大家介紹了C++ LeetCode1832題解判斷句子是否為全字母句示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 利用C/C++二進(jìn)制讀寫(xiě)png文件的方法示例

    利用C/C++二進(jìn)制讀寫(xiě)png文件的方法示例

    最近在做項(xiàng)目的時(shí)候遇到了這個(gè)問(wèn)題,所以想著總結(jié)下,方法自己和有需要的朋友,下面這篇文章主要介紹了利用C/C++二進(jìn)制讀寫(xiě)png文件的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • OpenCV實(shí)現(xiàn)馬賽克功能

    OpenCV實(shí)現(xiàn)馬賽克功能

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)馬賽克功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++11 簡(jiǎn)單實(shí)現(xiàn)線程池的方法

    C++11 簡(jiǎn)單實(shí)現(xiàn)線程池的方法

    這篇文章主要介紹了C++11 簡(jiǎn)單實(shí)現(xiàn)線程池的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡(jiǎn)單介紹

    C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡(jiǎn)單介紹

    這篇文章主要為大家詳細(xì)介紹了C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)的實(shí)現(xiàn)方法,如何使用C/C++產(chǎn)生隨機(jī)數(shù)函數(shù),感興趣的小伙伴們可以參考一下
    2016-04-04
  • C++實(shí)現(xiàn)猜數(shù)游戲

    C++實(shí)現(xiàn)猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)猜數(shù)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C語(yǔ)言責(zé)任鏈模式示例代碼

    C語(yǔ)言責(zé)任鏈模式示例代碼

    大家好,本篇文章主要講的是C語(yǔ)言責(zé)任鏈模式示例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C++中4種類(lèi)型轉(zhuǎn)換的方法分享

    C++中4種類(lèi)型轉(zhuǎn)換的方法分享

    這篇文章主要為大家詳細(xì)介紹了C++中4種類(lèi)型轉(zhuǎn)換的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的可以了解一下
    2023-04-04
  • Java?C++?算法題解leetcode145商品折扣后最終價(jià)格單調(diào)棧

    Java?C++?算法題解leetcode145商品折扣后最終價(jià)格單調(diào)棧

    這篇文章主要介紹了Java?C++?算法題解leetcode145商品折扣后最終價(jià)格單調(diào)棧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論