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

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

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

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

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

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

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

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

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

1.sizeof

在計算字符型數組時(例題+講解)

如代碼:char  arr1 []="hello bite!"  因為字符串末尾會自動添加\0作為結束標志 所以這個字符串實際是 “hello  bite!\0” 其中一個字符占一個字節(jié),空格和\0也各占一個字節(jié) 一共就是12個字節(jié);

代碼:

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

運行結果是:

計算整型數組(例題+講解)

如代碼:int arr2 [5]={0};因為是整型,所以一個元素占4個字節(jié)(一個整型所占大小);數組大小就是   元素個數×4   即arr2所占大小是5×4=20個字節(jié)

代碼:

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

運行結果:

2.strlen

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

例子一(講解)

char arr[]="abcdefg";   實際字符串內容為 "abcdefg\0" 即strlen所計算的是\0之前的"abcdefg",即算出字符串長度為7個字符;

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

運行結果:

例子二(講解)

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

代碼:

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

運行結果:

三.典型例題

例1

答案解析:

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

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

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

故上述printf會分別打?。?0  9

因此,選擇A

例2

答案解析:

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

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

因此,選擇B

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

相關文章

  • C++實現LeetCode(33.在旋轉有序數組中搜索)

    C++實現LeetCode(33.在旋轉有序數組中搜索)

    這篇文章主要介紹了C++實現LeetCode(33.在旋轉有序數組中搜索),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • 利用Qt實現FTP服務器并支持多客戶端登錄

    利用Qt實現FTP服務器并支持多客戶端登錄

    這篇文章主要為大家詳細介紹了如何利用Qt實現FTP服務器并支持多客戶端登錄,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • C++預定義的流對象基本示例詳解

    C++預定義的流對象基本示例詳解

    這篇文章主要為大家介紹了C++預定義的流對象基本示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • C++實現連連看消除算法

    C++實現連連看消除算法

    這篇文章主要為大家詳細介紹了C++實現連連看消除算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 一文讀懂C++ 虛函數 virtual

    一文讀懂C++ 虛函數 virtual

    這篇文章主要介紹了C++ 虛函數 virtual的相關資料,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • C++類中的運算符重載過程

    C++類中的運算符重載過程

    文章介紹了運算符重載在C++中的重要性以及實現方法,包括加法運算符重載、左移運算符重載、遞增運算符重載、+=運算符重載、關系運算符重載和賦值運算符重載
    2024-11-11
  • C++實現十大排序算法及排序算法常見問題

    C++實現十大排序算法及排序算法常見問題

    法是程序的靈魂,無論學習什么語言,做什么工程項目,都要考慮算法的效率實現,下面這篇文章主要給大家介紹了關于C++實現十大排序算法及排序算法常見問題的相關資料,需要的朋友可以參考下
    2021-09-09
  • Qt如何實現輸入框@聯(lián)系人的@檢測的示例

    Qt如何實現輸入框@聯(lián)系人的@檢測的示例

    本文主要介紹了Qt如何實現輸入框@聯(lián)系人的@檢測的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • C語言函數的基本使用和遞歸小結

    C語言函數的基本使用和遞歸小結

    這篇文章主要介紹了C語言函數的基本使用和遞歸小結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • C++實現的O(n)復雜度內查找第K大數算法示例

    C++實現的O(n)復雜度內查找第K大數算法示例

    這篇文章主要介紹了C++實現的O(n)復雜度內查找第K大數算法,結合實例形式分析了算法的原理以及具體實現方法,需要的朋友可以參考下
    2017-08-08

最新評論