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

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

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

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

0長(zhǎng)度數(shù)組不占用存儲(chǔ)空間

嵌入式應(yīng)用開發(fā) ? 來(lái)源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-09-28 15:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于0長(zhǎng)度數(shù)組是GNU C的擴(kuò)展,有一些巧妙編寫的詭異代碼,其執(zhí)行結(jié)果就是依賴于編譯器和優(yōu)化策略的實(shí)現(xiàn)的,我們來(lái)看看以下代碼:

#include 
#include 

int main(void)
{
    char a[0];
    printf("%pn", a);

    char b[0];
    printf("%pn", b);

    const char *c= "Hello";
    printf("%pn", c);

    const char *d = "Hello";
    printf("%pn", d);

    return EXIT_SUCCESS;
}

編譯結(jié)果是:

pYYBAGMz9PuAQcqxAAA-OXsqEvM539.png

可以看到a和b的地址就會(huì)被編譯器優(yōu)化到一處,因?yàn)閍[0] 和 b[0] 對(duì)于程序來(lái)說(shuō)是無(wú)法使用的,同樣編譯器對(duì)于相同字符串常量,往往地址也是優(yōu)化到一處,減少空間占用。

所以其本質(zhì)上涉及到的是一個(gè)C語(yǔ)言里面的數(shù)組和指針的區(qū)別問(wèn)題,Programming Abstractions in C一書中提到:

“arr is defined to be identical to &arr[0]”.

也就是說(shuō),char a[1]里面的a實(shí)際是一個(gè)常量,即a = &a[0]。而char *b是有一個(gè)實(shí)實(shí)在在的指針變量b存在。所以,a=b是不允許的,而b=a是允許的。

#include 
char a[1];
char *b;

int main () {
 b = a; 
  //a=b會(huì)報(bào)錯(cuò),incompatible types when assigning to type ‘char[1]’ from type ‘char *’
 a = b;
 return 0;
}

兩種變量都支持下標(biāo)式的訪問(wèn),那么對(duì)于a[0]和b[0]本質(zhì)上是否有區(qū)別?我們可以通過(guò)一個(gè)例子來(lái)說(shuō)明。

審核編輯:湯梓紅

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74417
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1673

    瀏覽量

    51960
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    嵌入式中零長(zhǎng)度數(shù)組基本操作方法

    C語(yǔ)言零長(zhǎng)度數(shù)組,聽起來(lái)可能有點(diǎn)奇怪,因?yàn)樗鼪](méi)有分配內(nèi)存空間,無(wú)法存儲(chǔ)數(shù)據(jù)。但實(shí)際上,零長(zhǎng)度數(shù)組在Linux內(nèi)核中隨處可見。 零長(zhǎng)度數(shù)組的定
    的頭像 發(fā)表于 05-11 08:49 ?2945次閱讀
    嵌入式中零<b class='flag-5'>長(zhǎng)度數(shù)組</b>基本操作方法

    請(qǐng)問(wèn)如何將幾十K大小的數(shù)組存放在flash里面,不占用內(nèi)存空間呢?

    請(qǐng)問(wèn)如何將幾十K大小的數(shù)組存放在flash里面,不占用內(nèi)存空間呢? 用了const好像不管用,還是占用了heap空間。
    發(fā)表于 07-19 07:10

    存儲(chǔ)空間的小端格式

    地址空間內(nèi)。存儲(chǔ)器中字節(jié)組織為小端格式。一個(gè)字存儲(chǔ)空間的最低字節(jié)數(shù)據(jù)為字的最低有效位,最高字節(jié)數(shù)據(jù)為最高有效位。 例:將 0x1122 3344 存放在地址為
    發(fā)表于 12-11 07:03

    IN100 eFuse存儲(chǔ)空間分布

    存儲(chǔ)空間
    橙群微電子
    發(fā)布于 :2023年06月12日 10:20:08

    I/O存儲(chǔ)空間什么意思?

    DSP的片內(nèi)存儲(chǔ),不是只有程序存儲(chǔ)空間區(qū)(RAM)和數(shù)據(jù)存儲(chǔ)空間區(qū)(ROM)嗎?那個(gè) I/O存儲(chǔ)空間區(qū)是什么意思?它屬于片內(nèi)存儲(chǔ)嗎?
    發(fā)表于 05-29 21:26

    用C語(yǔ)言編程,如何節(jié)省存儲(chǔ)空間

    問(wèn)題,變量有大有小呀,對(duì)的,所以這個(gè)時(shí)候共用體的空間為內(nèi)部變量最大占用空間的值。如此這般,共用體就可以通過(guò)共享存儲(chǔ)空間,來(lái)避免當(dāng)前沒(méi)有被使用的變量所造成的
    發(fā)表于 11-19 11:34

    請(qǐng)問(wèn)C語(yǔ)言中內(nèi)存地址是否占用存儲(chǔ)空間呢?

    比如內(nèi)存地址0028FF1C 這些數(shù)字和字母是否需要占用存儲(chǔ)空間呢?原因是?
    發(fā)表于 05-25 10:14

    存儲(chǔ)空間的分配

    (1)存儲(chǔ)空間的分配###1.片上SRAM
    發(fā)表于 07-28 06:06

    采用存儲(chǔ)空間循環(huán)使用方法達(dá)到延長(zhǎng)flash使用壽命

    存儲(chǔ)代碼占用Ram資源極少,不占用Flash用于存儲(chǔ)數(shù)據(jù)的空間,采用存儲(chǔ)空間循環(huán)使用方法達(dá)到延
    發(fā)表于 01-26 06:25

    請(qǐng)問(wèn)一下怎樣使定義的字符串數(shù)組不占用RAM空間呢?

    ads里沒(méi)有CODE關(guān)鍵詞,怎樣使定義的字符串數(shù)組不占用RAM空間呢?
    發(fā)表于 11-30 14:28

    怎樣使定義的字符串數(shù)組不占用RAM空間呢?

    ads 里沒(méi)有 CODE 關(guān)鍵詞,怎樣使定義的字符串數(shù)組不占用 RAM 空間
    發(fā)表于 03-09 10:51

    存儲(chǔ)空間的概念

    什么是云存儲(chǔ)空間?存儲(chǔ)空間是用于存儲(chǔ)對(duì)象(Object)的容器,所有的對(duì)象都必須隸屬于某個(gè)存儲(chǔ)空間。
    發(fā)表于 05-09 11:59 ?3117次閱讀

    C語(yǔ)言存儲(chǔ)空間與MCU(單片機(jī))

    首先,最近因公司項(xiàng)目需求,暫時(shí)學(xué)習(xí)的去做單片機(jī)的開發(fā),因此,需要具備的C編程語(yǔ)言,結(jié)合自己以前的移動(dòng)App開發(fā),總結(jié)出如下C語(yǔ)言的常規(guī)基礎(chǔ)知識(shí);一:存儲(chǔ)空間本節(jié)介紹nX-U8 內(nèi)核支持的存儲(chǔ)空間。二
    發(fā)表于 10-28 09:41 ?11次下載
    C語(yǔ)言<b class='flag-5'>存儲(chǔ)空間</b>與MCU(單片機(jī))

    存儲(chǔ)空間已滿怎么辦?

    存儲(chǔ)空間已滿怎么辦?當(dāng)云存儲(chǔ)空間已滿時(shí),我們可以采取以下一些常見的步驟來(lái)解決問(wèn)題: 1、刪除不必要的文件: 首先,檢查云存儲(chǔ)中是否有不再需要的文件或數(shù)據(jù)。刪除這些文件可以立即釋放存儲(chǔ)空間
    的頭像 發(fā)表于 11-14 17:44 ?1w次閱讀

    Synology如何使用Nvme固態(tài)做存儲(chǔ)空間

    Synology 如何使用Nvme固態(tài)做存儲(chǔ)空間
    發(fā)表于 10-09 10:55 ?0次下載
    宜春市| 邵东县| 冕宁县| 赤城县| 青神县| 碌曲县| 治多县| 大余县| 西畴县| 乌审旗| 靖边县| 青海省| 洪雅县| 安国市| 都昌县| 张北县| 太仆寺旗| 福建省| 兴文县| 喀喇| 马关县| 龙川县| 武汉市| 宁国市| 金华市| 淄博市| 教育| 独山县| 天峨县| 汝南县| 隆化县| 远安县| 班玛县| 故城县| 保靖县| 梁河县| 施秉县| 柳州市| 徐汇区| 黄浦区| 德庆县|