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

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

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

指針能不能作為循環(huán)變量?

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-02-16 18:11 ? 次閱讀
指針能不能作為循環(huán)變量?495b1648-addd-11ed-bfe3-dac502259ad0.png有這么一道筆試題,一個(gè)數(shù)組,一個(gè)指針,一個(gè)循環(huán),循環(huán)變量不是我們常見的整數(shù),而是一個(gè)指針。首先,指針就是變量,它可以像普通類型一樣來計(jì)算,所以把它當(dāng)作循環(huán)變量當(dāng)然沒有問題。剩下的就是要搞清楚,它是如何移動(dòng)的。
for(p=s+1;p < s + 4; p++)
p的初值是s+1,s是數(shù)組首元素地址,加一就是第二個(gè)元素地址,于是指針 p 指向數(shù)組第二個(gè)元素,就是B。499b4da8-addd-11ed-bfe3-dac502259ad0.png ?printf在輸出字符串的時(shí)候,后面的參數(shù)是個(gè)地址,就是從這個(gè)地址開始向后逐個(gè)輸出,直到遇到?,于是,第一次循環(huán)結(jié)果就是BCD。接下來,是p++操作,p加一會(huì)加幾個(gè)字節(jié),主要取決于它指向的內(nèi)存是什么類型。char *p說明它指向的是char類型的數(shù)據(jù),char類型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié),所以p+1也就加一個(gè)字節(jié),p指向了字符C,輸出CD。4a20453a-addd-11ed-bfe3-dac502259ad0.png ?一共循環(huán)三次,所以結(jié)果就一目了然了。
BCD CD D
指針運(yùn)算需要注意它的步長(zhǎng)。
#include 


int main()
{
    int num, *p = #
    char ch, *q = &ch;


    printf("p的值   %p
", p); 
    printf("p+1的值 %p
", p + 1); 


    printf("q的值   %p
", q); 
    printf("q+1的值 %p
", q + 1); 


    return 0;
}
比如,同樣是指針,int *和char *,它倆加一的結(jié)果就不一樣,一個(gè)加四個(gè)字節(jié),一個(gè)加一個(gè)字節(jié)。
root@Turbo:~# ./test 
p的值   0x7ffc8116daf4
p+1的值 0x7ffc8116daf8
q的值   0x7ffc8116daf3
q+1的值 0x7ffc8116daf4
root@Turbo:~#
如果把它理解成指向下一個(gè)元素,我覺得可能更容易接受一些。所以在寫代碼的時(shí)候,不同類型的指針不要隨便賦值,除非你知道你在干什么,否則,就會(huì)出現(xiàn)一些不可預(yù)知的錯(cuò)誤。比如下面的代碼:
#include 


int main()
{
    int num[] = {1, 2, 3, 4, 5}; 
    char *p = (char *)num;


    p++;


    printf("%d
", *(int *)p);


    return 0;
}

num是個(gè)整型數(shù)組,每個(gè)元素占4個(gè)字節(jié)。



但是指針p是字符型指針,對(duì)p做自增操作,每次只能移動(dòng)一個(gè)字節(jié)。很顯然,已經(jīng)不是一個(gè)完整的整數(shù)。所以這樣的賦值,盡可能避免。



審核編輯:湯梓紅


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

    關(guān)注

    1

    文章

    566

    瀏覽量

    20384
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    475

    瀏覽量

    70457
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67764
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    607

    瀏覽量

    28257

原文標(biāo)題:指針作為循環(huán)變量

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語言中結(jié)構(gòu)體能不能相加

    C語言中,結(jié)構(gòu)體能不能相加?
    的頭像 發(fā)表于 12-19 17:04 ?1074次閱讀
    C語言中結(jié)構(gòu)體<b class='flag-5'>能不能</b>相加

    AD7682/AD7689內(nèi)部參考電壓能不能作為其他電路的參考電壓?

    AD7682/AD7689內(nèi)部參考電壓能不能作為其他電路的參考電壓? 例如,能不能設(shè)定AD7682從REF pin輸出2.5V內(nèi)部參考電壓,接到ADA4841的正極端作為level
    發(fā)表于 12-21 06:52

    共享變量能不能實(shí)現(xiàn)這種功能呢

    各位大神好,請(qǐng)問用labview能不能實(shí)現(xiàn)這樣一種功能,在前面板中的按鈕控制某一VI的運(yùn)行,這一個(gè)VI的運(yùn)行結(jié)果又返回到主VI,不知道用共享變量能不能實(shí)現(xiàn)。描述的不夠清楚,勿怪,謝謝。
    發(fā)表于 12-30 09:52

    急求atmega128可定義變量類型,主要是看能不能定義32位的變量

    急求atmega128可定義變量類型,主要是看能不能定義32位的變量
    發(fā)表于 05-17 10:46

    labview中能不能記錄循環(huán)的狀態(tài)

    labview中能不能記錄循環(huán)的狀態(tài),并在中途退出后再次打開恢復(fù)中間狀態(tài)
    發(fā)表于 05-20 14:19

    請(qǐng)問AD7682內(nèi)部參考電壓能不能作為其他電路的參考電壓?

    AD7682/AD7689內(nèi)部參考電壓能不能作為其他電路的參考電壓?例如,能不能設(shè)定AD7682從REF pin輸出2.5V內(nèi)部參考電壓,接到ADA4841的正極端作為level sh
    發(fā)表于 12-14 09:11

    電池能不能修復(fù)?

    電池能不能修復(fù)? 電池修復(fù)作為一個(gè)新生事物,許多人對(duì)它不了解,也有許多人對(duì)它一知半解。那么電池到底能不能修復(fù)呢?
    發(fā)表于 11-23 10:40 ?1065次閱讀

    光耦(TLP521-4)能不能轉(zhuǎn)換電壓?

    光耦(TLP521-4)能不能轉(zhuǎn)換電壓?
    發(fā)表于 05-31 11:15 ?4237次閱讀

    新能源的車到底能不能買_新能源汽車的利與弊

     那么新能源汽車到底能不能買??jī)?nèi)行人說出實(shí)情,后悔沒有早知道
    的頭像 發(fā)表于 07-30 09:59 ?3862次閱讀

    諧波治理到底能不能節(jié)電

    諧波治理到底能不能節(jié)電?”這是我們做電能質(zhì)量行業(yè)經(jīng)常會(huì)被問到的一個(gè)問題。隨著國家對(duì)節(jié)能減排項(xiàng)目的大力支持,有不少商業(yè)人士一擁而上加入到節(jié)能行業(yè),想要分得節(jié)能市場(chǎng)的一杯羹。那么,通過諧波治理到底能不能實(shí)現(xiàn)節(jié)能的效果呢?
    發(fā)表于 04-23 15:50 ?3319次閱讀

    大型輥壓機(jī)軸磨損能不能現(xiàn)場(chǎng)維修?

    大型輥壓機(jī)軸磨損能不能現(xiàn)場(chǎng)維修?
    發(fā)表于 06-23 15:35 ?1次下載

    懸空指針能不能訪問?

    指針被釋放后,是不是就變成了空指針?這是很多剛接觸指針的同學(xué)存在的誤區(qū)。
    的頭像 發(fā)表于 08-17 17:11 ?764次閱讀
    懸空<b class='flag-5'>指針</b><b class='flag-5'>能不能</b>訪問?

    物聯(lián)網(wǎng)流量卡到底能不能用?

    物聯(lián)網(wǎng)流量卡到底能不能用?
    的頭像 發(fā)表于 08-28 09:40 ?5690次閱讀
    物聯(lián)網(wǎng)流量卡到底<b class='flag-5'>能不能</b>用?

    拼接屏能不能觸屏操作?

    拼接屏能不能直接觸屏操作,小編回答可以的,實(shí)際上很多客戶購買拼接屏?xí)r都會(huì)提出拼接屏能不能加觸摸的功能?我們回復(fù)是可以的,那是一種怎樣的原理呢? 拼接屏一般是用來大屏展示,用來播放文字、圖像等內(nèi)容
    的頭像 發(fā)表于 09-11 14:36 ?4283次閱讀

    直流電源到底能不能驅(qū)動(dòng)交流燈泡發(fā)光?

    我在網(wǎng)上經(jīng)??吹接芯W(wǎng)友在問直流電源到底能不能驅(qū)動(dòng)交流燈泡發(fā)光?事實(shí)勝于雄辯,這次專門準(zhǔn)備了一盒干電池,來實(shí)際演示一下,看看能不能發(fā)光。
    的頭像 發(fā)表于 11-13 15:07 ?2507次閱讀
    直流電源到底<b class='flag-5'>能不能</b>驅(qū)動(dòng)交流燈泡發(fā)光?