日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題

汽車玩家 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2020-04-04 17:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

sizeof基礎(chǔ)

C語言中,sizeof是一個操作符(operator),而不是函數(shù)!其用于判斷數(shù)據(jù)類型或者表達(dá)式長度(所占的內(nèi)存字節(jié)數(shù))。其有兩種表達(dá)形式:

(1)sizeof(類型說明符)

(2)sizeof 表達(dá)式

我們通常使用第(1)種形式。

其返回值類型為size_t,在頭文件stddef.h中定義。這是一個依賴于編譯系統(tǒng)的值,一般定義為:

typedef unsigned int size_t;

首先確定我們當(dāng)前編譯環(huán)境中C語言各個基本數(shù)據(jù)類型在內(nèi)存中所占字節(jié)數(shù),我這里是32bit編譯環(huán)境:

C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題

我們這里的輸出結(jié)果為:

C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題

sizeof典型問題

sizeof看起來似乎很簡單,那來看看下面這段代碼,你能做對幾個:

C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題

實際運行 輸出結(jié)果為:

C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題

簡要分析:

(1)sizeof(char) 的值為1。因為char類型數(shù)據(jù)在內(nèi)存中占1字節(jié)。

(2)sizeof(char*)的值為4。因為char*代表一個指針,在32bit環(huán)境中為4字節(jié),也即unsigned int的字節(jié)長度。

(3)sizeof('a')的值為4。因為此處‘a(chǎn)’是獨立存在的一個字符(沒有賦值給其它變量),實際上就是一個整型數(shù),占4個字節(jié),即此處‘a(chǎn)’對應(yīng)的ascii碼的十進(jìn)制為整數(shù)97。但是需要注意的是,若有如下定義:

char ch = 'a';

則此處ch的字節(jié)數(shù)sizeof(ch)的值為1,而不是4。

(4)sizeof(*s+0)的值為4,因為'h'+0 轉(zhuǎn)化為int,占4字節(jié)。此處涉及到類型轉(zhuǎn)換的問題。即不同類型的數(shù)據(jù)進(jìn)行運算時,會首先轉(zhuǎn)換成相同數(shù)據(jù)類型。轉(zhuǎn)換規(guī)則為(圖片來源于網(wǎng)絡(luò)):

C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題

(5)sizeof(*s)的值為1,因為此處*s為字符串s的第1個字符‘h’(注意與第三點區(qū)分開來,這里是有用char來修飾的),所以所占字節(jié)長度為1。

(6)sizeof(s)的值為4,同(2),此處s是一個指針,在32bit環(huán)境中為4字節(jié),也即unsigned int的字節(jié)長度。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3238

    瀏覽量

    76529
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146202
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    C語言重點—指針篇

    C語言是比較偏底層的語言,為什么他比較偏底層,就是因為他的很多操作都是直接針對內(nèi)存操作的。 這篇我們就來講解
    發(fā)表于 01-22 08:23

    C語言指針p、*p、&p、*&p、&*p分別代表什么

    * p和 *p又代表什么嗎? 寫個測試程序下面是一個簡單的C語言代碼,可以用來演示上面提到的幾個標(biāo)識,讓我們更好的理解幾個標(biāo)識的意義: #include int main() {
    發(fā)表于 01-07 07:34

    C語言主要特點

    ,源程序短,因此輸入程序時工作量少。 2.運算豐富,C語言的運算包含的范圍很廣泛,共有34種運算。
    發(fā)表于 01-05 07:41

    C語言嵌入式系統(tǒng)編程注意事項-內(nèi)存操作

    C語言嵌入式系統(tǒng)編程注意事項之內(nèi)存操作 在嵌入式系統(tǒng)的編程中,常常要求在特定的內(nèi)存單元讀寫內(nèi)容,匯編有對應(yīng)的MOV指令,而除C/C++以外的
    發(fā)表于 01-04 07:31

    如何在TensorFlow Lite Micro中添加自定義操作符(1)

    相信大家在部署嵌入式端的AI應(yīng)用時,一定使用過TensorFlow Lite Micro,以下簡稱TFLm。TFLm 是專為微控制器和嵌入式設(shè)備設(shè)計的輕量級機器學(xué)習(xí)推理框架,它通過模塊化的操作符系統(tǒng)
    的頭像 發(fā)表于 12-26 10:34 ?5830次閱讀

    C語言經(jīng)典問題及解析

    (\"> 6\") : puts(\"<= 6\"); } 考察點: 這 個問題測試你是否懂得C語言中的整數(shù)自動轉(zhuǎn)換原則,我發(fā)現(xiàn)有
    發(fā)表于 12-23 07:52

    布爾表達(dá)式和零值比較處理

    ==0,x!=0(或者x>0)。 C代碼中每次關(guān)系運算的調(diào)用,編譯器都會發(fā)出一個比較指令。 如果操作符是上面提到的,編譯器便會優(yōu)化掉比較指令。例如: int aFunction
    發(fā)表于 12-12 06:16

    C語言C++之間的區(qū)別是什么

    函數(shù)重載,即在同一作用域內(nèi)可以定義多個同名函數(shù),只要它們的參數(shù)列表不同即可。 C語言不支持函數(shù)重載,每個函數(shù)必須具有唯一的標(biāo)識。 4、異常處理: C++內(nèi)置了異常處理機制,允許程
    發(fā)表于 12-11 06:23

    C語言的常量介紹

    、-13; 實型常量:13.33、-24.4; 字符常量:‘a(chǎn)’、‘M’ 字符串常量:”I love china!” 在C語言中,可以用一個標(biāo)識來表示一個常量,稱之為符號常量。符號常量在使用之前必須先
    發(fā)表于 11-24 07:12

    C語言特性

    1、高效性:直接操作硬件 C 語言代碼的執(zhí)行效率極高,這是其最為顯著的優(yōu)勢之一。它能夠直接訪問硬件資源,與底層硬件進(jìn)行緊密交互,充分發(fā)揮硬件的性能潛力。在嵌入式開發(fā)中,硬件資源往往十分有限,對程序
    發(fā)表于 11-24 07:01

    C語言操作符

    C 語言操作符包括按位與( )、按位或(|)、按位異或(^)、按位取反(~)、左移(<<)和右移(>>)。 按位與( ) 只有當(dāng)兩個二進(jìn)制位
    發(fā)表于 11-21 07:52

    C語言宏拼接運算典型使用

    C語言中,##運算(稱為[size=16.002px]標(biāo)記拼接運算)用于宏定義中將兩個標(biāo)記(token)拼接成一個新的標(biāo)記。它在預(yù)處理階段處理,常用于動態(tài)生成變量名、函數(shù)名或類型
    發(fā)表于 11-20 08:27

    C語言和單片機C語言有什么差異

    語言的功能特性外,它可以很好的操作底層的硬件接口。在C語言的基礎(chǔ)上,如果你把一些單片機的端口或特殊功能寄存器加于定義,使用的時候會更加方便,寫語句的時候,直接直觀的編寫。這樣就差不多是
    發(fā)表于 11-14 07:55

    C語言的printf基本用法介紹

    也是代碼的一部分,但是它并不會給程序帶來任何影響,編譯器在編譯階段會忽略注釋的內(nèi)容,或者說刪除注釋的內(nèi)容。我在《C語言標(biāo)識、關(guān)鍵字和注釋》一節(jié)中做了詳細(xì)講解。 3) money 的輸出值并不是
    發(fā)表于 11-12 07:04

    第4章 C語言基礎(chǔ)以及流水燈的實現(xiàn)(4.3 4.4)

    的符號分別是:+、-、*、/、%。 C語言有一個很重要的賦值運算“=”,前邊程序有使用過。在C語言里,“=”代表的意思是賦值,而不是等于。
    的頭像 發(fā)表于 10-29 15:30 ?446次閱讀
    姜堰市| 徐汇区| 尉氏县| 江北区| 界首市| 塘沽区| 巴南区| 松滋市| 靖远县| 惠安县| 阳曲县| 宣武区| 榆社县| 鄂伦春自治旗| 平乡县| 阳江市| 广宗县| 阳山县| 和硕县| 衡阳县| 达拉特旗| 平陆县| 洛宁县| 冕宁县| 甘谷县| 贵定县| 格尔木市| 阿拉尔市| 萨嘎县| 大邑县| 隆昌县| 台湾省| 萝北县| 平顶山市| 凤山县| 平罗县| 聊城市| 子长县| 咸丰县| 沅陵县| 齐齐哈尔市|