在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言使用技巧:數組的下標可以是負數|一個字節可以保存多個數據

學益得智能硬件 ? 來源:學益得智能硬 ? 作者:學益得智能硬 ? 2023-01-11 10:32 ? 次閱讀

01數組的下標可以是負數

C語言中使用數組,一般來說都是這樣的:

inta[5]={1,2,3,4, 5};
a[0] = 10;
語法規定,數組的長度必須是個常量,保證數組所占的內存大小不變。數組下標從 0 開始,依次往后遞增。于是大部分同學都把它當作了默認的規則。 其實,數組的長度可以是0,叫做柔性數組,目的是讓結構體變成可變長度,可以參考下面的文章: 數組的長度為0會怎樣? 第二個,數組的下標也可以是負數,正數表示向后訪問,負數表示向前訪問。比如:
int a[5] = {1, 2, 3, 4, 5};
int *p = &a[2];
p[-2] = 0;
如果不太明白,可以看下下面的圖片:

2808c51a-90ca-11ed-bfe3-dac502259ad0.png ?

對于二維數組,同樣可以使用小于0的下標來訪問元素。
intarray[3][3]={{1,2,3},{2,3,4},{3,4,5}};
int(*p)[3]=array+2;
printf("%d
",p[-1][-1]);
指針p指向數組的第三行,p[-1]表示第二行的首元素地址,p[-1][-1]表示第二行首元素的前面一個元素,即第一行最后一個元素(二維數組在內存中也是連續的)。

284eaf80-90ca-11ed-bfe3-dac502259ad0.png

使用負數作為下標來訪問數組,切記內存不要越界,訪問的內存一定是存在的,否則會導致程序奔潰。

02 數組名可以放在括號中

由于數組和指針在使用上是等價的,數組可以使用指針來表示,指針也可以通過下標來訪問:

a[i]= 100;
*(a+i) = 100;
*(i + a) = 100
這三行代碼的效果是一樣的。 所以編譯器也支持這樣的用法:
i[a] = 100;
放在二維數組中就是這樣的:
int array[3][3] = {{1, 2, 3}, {2, 3, 4}, {3, 4, 5}};
printf("%d
",2[array][2]);
倒不是推薦這種寫法,筆試題中會出現,認識就行。

03 一個字節保存多個數據

可以使用結構體位域來保存。
struct Test
{
chara:4;
charb:4;
};
冒號表示位域,即a只占3位(二進制數),b占5位,結構體一共占了一個字節。 對結構體進行初始化:
struct Test t;
t.a=1;
t.b=3;
在內存中的布局是這樣的:

2880698a-90ca-11ed-bfe3-dac502259ad0.png ?

如果記錄下結構體的地址,直接訪問整個字節,得到的結果就是0x31。
struct Test t;
t.a=1;
t.b=3;


char*s=(char*)&t;
printf("%x
",*s);

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7230

    瀏覽量

    90496
  • 內存
    +關注

    關注

    8

    文章

    3089

    瀏覽量

    74759
  • C語言
    +關注

    關注

    180

    文章

    7622

    瀏覽量

    139243
  • 指針
    +關注

    關注

    1

    文章

    484

    瀏覽量

    70797
  • 數組
    +關注

    關注

    1

    文章

    419

    瀏覽量

    26207

原文標題:C語言奇技淫巧:數組的下標可以是負數 | 一個字節可以保存多個數據

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    怎么將一個字節數組放在USAT?

    我看不到將一個字節數組放在USAT上的功能。我該怎么做?也沒有字節的變量類型嗎?與PIC32的字節樣,ISUNCORE CHAR?我在網上看過。這似乎不對……所以如果我想在
    發表于 10-08 06:39

    為什么STM32F107 LWIP發送數據都會丟最后一個字節?

    程序目的:MCU接收網絡數據并處理后,向網絡返回個數組。問題是:每次返回給網絡的數據都會丟失最后一個字節,具體見程序,麻煩各位高手給指點
    發表于 10-16 02:41

    數組下標可以負數嗎 ?

    數組下標可以負數
    發表于 09-26 06:45

    寫入一個字節到24c02并讀出來驗證

    寫入一個字節到24c02并讀出來驗證 本課的程序已經包含了上顆的內容,增加了讀
    發表于 08-09 22:01 ?3197次閱讀
    寫入<b class='flag-5'>一個字節</b>到24<b class='flag-5'>c</b>02并讀出來驗證

    UART 發送數據丟失最后一個字節

    STM32 UART 發送數據丟失最后一個字節
    發表于 12-04 15:10 ?0次下載

    C語言教程之輸出一個字符的前驅字符

    C語言教程之輸出一個字符的前驅字符,很好的C語言資料,快來學習吧。
    發表于 04-22 17:45 ?0次下載

    C語言教程之使用二維數組保存數據問題

    C語言教程之使用二維數組保存數據問題,很好的C語言
    發表于 04-25 15:03 ?0次下載

    關于UART發送數據丟失最后一個字節問題的詳細解析-pdf

    STM32 UART_發送數據丟失最后一個字節
    發表于 04-10 11:23 ?3次下載

    如何利用單片機向PC發送一個字節數據

    //流水燈控制碼,該數組被定義為全局變量 /***************************************************** 函數功能:向PC發送一個字節數據
    發表于 11-23 15:53 ?8117次閱讀

    淺談STM32串口通信()基本介紹和一個字節傳輸的實現

    文章目錄0 傳輸引腳1 傳輸一個字節1.1 發送一個字節1.2 接收一個字節2 代碼2.1 配置2.2 發送一個字節2.3 接收一個字節0
    發表于 12-24 18:51 ?14次下載
    淺談STM32串口通信(<b class='flag-5'>一</b>)基本介紹和<b class='flag-5'>一個字節</b>傳輸的實現

    UART發送數據丟失最后一個字節

    電子發燒友網站提供《UART發送數據丟失最后一個字節.pdf》資料免費下載
    發表于 08-01 17:57 ?1次下載
    UART發送<b class='flag-5'>數據</b>丟失最后<b class='flag-5'>一個字節</b>

    stm32如何向串口用一個字節發送3300這個數

    stm32如何向串口用一個字節發送3300這個數? STM32是種嵌入式微控制器,具有高性能,低功耗和低成本等優勢。其中,串口通信是嵌入式系統中常用的通訊方式,可以與其他設備或模塊進
    的頭像 發表于 10-26 11:31 ?968次閱讀

    c語言數組怎么定義

    : [ ]; 其中, :數組中元素的數據類型,可以是C語言支持的任何數據類型,例如整型、字符型、
    的頭像 發表于 11-24 10:11 ?3543次閱讀

    c語言中多維數組可以嵌套定義

    C語言中多維數組可以嵌套定義,這使得我們可以個數組
    的頭像 發表于 11-24 10:18 ?1375次閱讀

    數組下標為什么可以是負數

    最近有同學發來這樣段代碼,并提出問題,數組下標為什么可以是
    的頭像 發表于 12-20 11:18 ?326次閱讀
    主站蜘蛛池模板: 色婷婷亚洲精品综合影院 | 天天操天天干天天操 | 天天色综合社区 | 视频一区在线观看 | 夜夜做日日做夜夜爽 | 欧美18性欧美丶黑吊 | 97久久天天综合色天天综合色hd | 啪啪免费看视频 | 亚洲伦理一区 | 日本特级黄色录像 | 狼色影院 | 欧美日韩色综合网站 | 欧美日韩国产乱了伦 | 乱轮黄色小说 | 一区二区三区亚洲 | 影音先锋ady69色资源网站 | 色香欲综合成人免费视频 | 狠狠婷婷 | 夜夜嘿视频免费看 | 四虎院影永久在线观看 | 69自拍视频 | 欧美另类色 | 九九热精品视频 | 亚洲午夜在线视频 | 四虎8848精品永久在线观看 | 色香欲亚洲天天综合网 | 成人午夜精品久久久久久久小说 | 天天鲁天天爽精品视频 | 在线激情网 | 久久久久久久久久免免费精品 | 在线观看免费高清 | 日本三级456 | 成人三级毛片 | 天天做天天爱天天做天天吃中 | 一级毛片在线看在线播放 | 五月婷在线观看 | 91大神大战丝袜美女在线观看 | 韩国理论片在线看2828dy | 午夜69成人做爰视频网站 | 亚洲成人在线免费 | 免费亚洲视频在线观看 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品