一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

數(shù)組的下標(biāo)為什么可以是負(fù)數(shù)

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-12-20 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近有同學(xué)發(fā)來這樣一段代碼,并提出一個問題,數(shù)組的下標(biāo)為什么可以是負(fù)數(shù)?

#include 


int main()
{
    const char *s = "helloworld";
    const char *p = s + 5;


    printf("%c
", p[-2]);


    return 0;
}

關(guān)鍵是這段代碼,編譯運(yùn)行都很順利。

首先需要搞懂下標(biāo)的作用是什么,準(zhǔn)確的說,它是個偏移量。

比如 a[3],數(shù)組名 a 作為數(shù)組首元素地址,下標(biāo) 3 表示從這個地址開始向后移動 3 個元素,至于具體是幾個字節(jié),得看什么元素。

所以 a[3] 完全等價于 *(a + 3),甚至把代碼寫成 3[a] 編譯器也沒意見,表示的都是一個意思。

如果把數(shù)組下標(biāo)寫成負(fù)數(shù),就表示向前偏移。

a[-1] 就是向前偏移一個元素,很顯然,前面這塊內(nèi)存不屬于數(shù)組,不能這樣使用,所以很少見到數(shù)組下標(biāo)是負(fù)數(shù)的。

但是對于這樣精心設(shè)計過的代碼,保證內(nèi)存不會越界的情況下,完全沒有問題。

s 指向了字符 h,p 指向了字符 w,p[-2] 就是往前數(shù)兩個元素,所以打印出來的就是 l。

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

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

    關(guān)注

    1

    文章

    420

    瀏覽量

    26540

原文標(biāo)題:數(shù)組的下標(biāo)可不可以是負(fù)數(shù)

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    ADS1298負(fù)數(shù)的編碼,應(yīng)該怎么處理?

    由于是送到TFT屏上顯示,沒做過負(fù)的顯示。ADS1298是24位,而常見的都是32和16位,我要同時顯示正負(fù)數(shù),關(guān)于負(fù)數(shù)的編碼,應(yīng)該怎么處理?
    發(fā)表于 02-12 07:59

    請問PCM4222(AIN+)-(AIN-)的輸入范圍可以是負(fù)電壓嗎?

    請問PCM4222(AIN+)-(AIN-)的輸入范圍可以是負(fù)電壓嗎?
    發(fā)表于 02-10 07:46

    ADS5842如何接入和設(shè)置?參考電壓源最低可以是多少?

    如何接入和設(shè)置?參考電壓源最低可以是多少?當(dāng)?shù)陀谕扑]時1.2V時,對器件性能有什么影響?
    發(fā)表于 01-14 08:35

    使用ADS8341時,其COM腳可以接負(fù)電壓嗎,最大可以是多少?

    各位好,想請教一下使用ADS8341時,其COM腳可以接負(fù)電壓嗎,最大可以是多少?比如如果接-2V會不會有問題(Vref接4V),謝謝!
    發(fā)表于 12-17 07:32

    dac5686的IOVDD可以是2.5V嗎?

    使用DAC5686遇到一些疑問, 1.手冊說IO的電平為1.8-V/3.3-V CMOS-Compatible Interface,請問,dac5686的IOVDD可以是2.5V么?我的電路圖
    發(fā)表于 12-04 08:31

    數(shù)組名之間可以直接賦值嗎

    數(shù)組之間的賦值能不能直接使用等于號?比如這樣的代碼。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
    的頭像 發(fā)表于 11-26 11:23 ?627次閱讀

    指針數(shù)組和二維數(shù)組有沒有區(qū)別

    指針數(shù)組和二維數(shù)組有沒有區(qū)別?比如這樣的兩個代碼。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
    的頭像 發(fā)表于 11-24 11:12 ?543次閱讀

    C語言數(shù)組應(yīng)用計算機(jī)導(dǎo)論A第6講:數(shù)組

    C語言數(shù)組應(yīng)用計算機(jī)導(dǎo)論A第6講:數(shù)組
    發(fā)表于 11-20 15:33 ?1次下載

    如何在文本字段中使用上標(biāo)、下標(biāo)及變量

    在KiCad的任何文本字段中,都可以通過以下的方式實現(xiàn)上標(biāo)、下標(biāo)、上劃線以及顯示變量及字段值的描述: 文本變量“文本變量”可以在 原理圖設(shè)置->工程->文本變量 中設(shè)置。下圖中設(shè)置了一個變量名
    的頭像 發(fā)表于 11-12 12:23 ?657次閱讀
    如何在文本字段中使用上標(biāo)、<b class='flag-5'>下標(biāo)</b>及變量

    TLV320AIC3254的輸入斷開,采集噪聲數(shù)據(jù)均為負(fù)數(shù)還能聽到噪聲,請問負(fù)數(shù)的底噪是如何產(chǎn)生的?

    TLV320AIC3254的輸入斷開,采集噪聲數(shù)據(jù),發(fā)現(xiàn)所有的數(shù)據(jù)均為負(fù)數(shù),并且能聽到明顯的噪聲。想請教大家,負(fù)數(shù)的底噪是如何產(chǎn)生的?謝謝!
    發(fā)表于 10-17 07:40

    labview字符串數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW中,將字符串數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項常見的任務(wù),尤其是在處理數(shù)據(jù)采集、信號處理或用戶輸入時。 1. 理解LabVIEW的數(shù)據(jù)類型 在開始之前,了解LabVIEW中的數(shù)據(jù)類型是非
    的頭像 發(fā)表于 09-04 17:47 ?5641次閱讀

    OPA376的供電電源是否可以是不對稱的?

    大家好,我想問一下OPA376的供電電源是否可以是不對稱的?比如-2V~3V 謝謝!
    發(fā)表于 08-28 06:15

    請問LMC660可以是+12V,-5V供電嗎?

    LMC660可以是+12V,-5V供電嗎?
    發(fā)表于 08-20 08:29

    為什么LMH6629仿真結(jié)果中電壓是負(fù)數(shù)

    請問大家為什么我的仿真結(jié)果中電壓是負(fù)數(shù),下面是我的仿真電路和結(jié)果圖,感謝大家?guī)兔?
    發(fā)表于 08-05 07:25

    請問VCA810的供電電壓可以是+10V和-10V嗎?

    請問VCA810的供電電壓可以是+10V和-10V嗎?
    發(fā)表于 07-31 06:14