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

C語言之sizeof與strlen的使用及區(qū)別

 更新時間:2022年07月13日 10:45:54   作者:魏波-  
這篇文章主要介紹了C語言之sizeof與strlen的使用及區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

先上一個例子:

結(jié)果: 

1、sizeof與strlen

char c[] = “abc\0cba”;

問題1:sizeof(c) = ?

問題2:strlen(c) = ?

問題3:執(zhí)行free(c);之后會有什么后果?

解答1:8

解答2:3   (判斷字符串a(chǎn)的長度,這個長度不包括"\0")

解答3:段錯誤

2、short a[100],sizeof(a)返回? 

A 2     B 4       C 100       D 200        E 400 

答案:D

段錯誤:指訪問的內(nèi)存超出了系統(tǒng)所給這個程序的內(nèi)存空間。

匯編語言的程序設(shè)計是分4個段來設(shè)計的,即用來放數(shù)據(jù)的數(shù)據(jù)段DS,臨時存放數(shù)據(jù)的堆棧段SS、存放程序代碼的代碼段、存放附加數(shù)據(jù)的附加段,每一段的最大存儲空間為64KB,跳轉(zhuǎn)指令、程序調(diào)用指令在轉(zhuǎn)移到地址沒有超過64KB地址空間范圍的叫段內(nèi)轉(zhuǎn)移,超出64KB地址空間范圍的叫段間轉(zhuǎn)移。這就是段內(nèi)和段間的含義。 

3、下列程序在32位 linux 或 unix 中的結(jié)果是什么?

void func(char *str)
{
	printf(" %d", sizeof(str));
	printf(" %d", strlen(str));
}
 
int main() 
{
	char a[] = "123456789";
	printf(" %d", sizeof(a));
	printf(" %d", strlen(a));
	func(a);
 
	getchar();
	return 0;
}

結(jié)果: 10 9 4 9

在C/C++里數(shù)組作為參數(shù)時傳遞的實際上是指向數(shù)組第一個元素的指針,因此sizeof(str)返回的是指針的大小,即4。所有的指針大小都是4。

下列程序在 64 位 linux 或 unix 中的結(jié)果是什么?

結(jié)果: 10 9 8 9

為什么在64位系統(tǒng)中指針的大小是8,而32位的卻是4? 

64位系統(tǒng),這個位數(shù)指的是CPU 里面的通用寄存器的數(shù)據(jù)寬度為64位,也就是說一個地址占二進制位數(shù)是64,所以sizeof(double *)==sizeof(int *)==sizeof(char *)==64/8==8

32位系統(tǒng),同理,他的一個地址占32位二進制空間,sizeof(double *)==sizeof(int *)==sizeof(char *)==32/8==4

其實明白了兩個系統(tǒng)的尋址原理就能明白,大體就是這個原因。地址跟系統(tǒng)有關(guān),但是基本數(shù)據(jù)類型占的大小是由C語言本身決定。 

4、sizeof與strlen的區(qū)別本質(zhì)上而言

不同點:

(1)sizeof是一個運算符,它用類型作為參數(shù),而strlen只是C庫提供的一個函數(shù),他用來計算以’/0’結(jié)果的字符串的長度,即它的參數(shù)只能是char*。

(2)strlen的結(jié)果要在運行的時候才能計算出來,是用來計算字符串的實際長度,而sizeof的結(jié)果是在編譯的時候就計算過的,是類型或變量占內(nèi)存的大小。 注意:sizeof計算的是類型或者變量占內(nèi)存的大小。

相同點:

(1)它們相同的地點就只是返回值,都是一個size_t類型的值。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入C++ 函數(shù)映射的使用詳解

    深入C++ 函數(shù)映射的使用詳解

    我比較喜歡用代碼結(jié)合實際來講解,下面我將以一段事例代碼來講解如何使用這幾種映射
    2013-07-07
  • c++遞歸解數(shù)獨方法示例

    c++遞歸解數(shù)獨方法示例

    這篇文章主要介紹了c++遞歸解數(shù)獨方法示例,需要的朋友可以參考下
    2014-03-03
  • 看圖深入理解單鏈表的反轉(zhuǎn)

    看圖深入理解單鏈表的反轉(zhuǎn)

    今天遇到單向鏈表的反轉(zhuǎn)的問題,于是靜下心來好好想了一番。下面這篇文章主要給大家介紹了關(guān)于單鏈表反轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • C++?容器中map和unordered?map區(qū)別詳解

    C++?容器中map和unordered?map區(qū)別詳解

    這篇文章主要為大家介紹了C++?容器中map和unordered?map區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • C++回溯算法中組合的相關(guān)問題分析

    C++回溯算法中組合的相關(guān)問題分析

    回溯算法并不是什么高效的算法,因為本質(zhì)上時去遍歷所有元素,找出所有可能,然后選出需要的答案。那為什么還要回溯法,簡單來說,不是所有的問題都能用什么巧妙的方法來解決的
    2023-03-03
  • C語言之strtol函數(shù)用法詳解

    C語言之strtol函數(shù)用法詳解

    這篇文章主要介紹了C語言之strtol函數(shù)用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 關(guān)于C++為什么不加入垃圾回收機制解析

    關(guān)于C++為什么不加入垃圾回收機制解析

    C++為什么不加入垃圾回收機制呢?現(xiàn)在肯定還有很多人不太了解,不過沒關(guān)系,下面小編就為大家詳細的介紹下究竟C++為什么不加入垃圾回收機制。一起跟隨小編過來看看吧
    2017-01-01
  • Visual?Studio2022的完全卸載及安裝到D盤的操作方法

    Visual?Studio2022的完全卸載及安裝到D盤的操作方法

    這篇文章主要介紹了Visual?Studio2022的完全卸載以及完全安裝到D盤,因為VS如果隨便寫在會有很多很多的亂七八糟的東西掉出來,所以我們選擇制式一點的卸載方式,需要的朋友可以參考下
    2022-09-09
  • 基于getline()函數(shù)的深入理解

    基于getline()函數(shù)的深入理解

    本篇文章是對getline()函數(shù)的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • c++作用域運算符用法(全局變量和局部變量)

    c++作用域運算符用法(全局變量和局部變量)

    這篇文章主要介紹了c++作用域運算符用法,需要的朋友可以參考下
    2014-04-04

最新評論

日照市| 腾冲县| 宁陵县| 松溪县| 离岛区| 望都县| 大兴区| 馆陶县| 页游| 汪清县| 鹿邑县| 西峡县| 广宁县| 京山县| 长垣县| 涟水县| 邮箱| 定边县| 兴义市| 大足县| 绍兴市| 新干县| 双鸭山市| 雷州市| 黄骅市| 光山县| 贡山| 崇州市| 道真| 黄石市| 改则县| 溆浦县| 观塘区| 阿拉善右旗| 宣威市| 彭水| 漠河县| 高安市| 新乡县| 临澧县| 武鸣县|