指針能不能作為循環(huán)變量?有這么一道筆試題,一個數(shù)組,一個指針,一個循環(huán),循環(huán)變量不是我們常見的整數(shù),而是一個指針。首先,指針就是變量,它可以像普通類型一樣來計算,所以把它當(dāng)作循環(huán)變量當(dāng)然沒有問題。剩下的就是要搞清楚,它是如何移動的。
for(p=s+1;p < s + 4; p++)
p的初值是s+1,s是數(shù)組首元素地址,加一就是第二個元素地址,于是指針 p 指向數(shù)組第二個元素,就是B。
?printf在輸出字符串的時候,后面的參數(shù)是個地址,就是從這個地址開始向后逐個輸出,直到遇到?,于是,第一次循環(huán)結(jié)果就是BCD。接下來,是p++操作,p加一會加幾個字節(jié),主要取決于它指向的內(nèi)存是什么類型。char *p說明它指向的是char類型的數(shù)據(jù),char類型數(shù)據(jù)在內(nèi)存中占一個字節(jié),所以p+1也就加一個字節(jié),p指向了字符C,輸出CD。
?一共循環(huán)三次,所以結(jié)果就一目了然了。
BCD CD D
指針運算需要注意它的步長。
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é)果就不一樣,一個加四個字節(jié),一個加一個字節(jié)。
root@Turbo:~# ./test
p的值 0x7ffc8116daf4
p+1的值 0x7ffc8116daf8
q的值 0x7ffc8116daf3
q+1的值 0x7ffc8116daf4
root@Turbo:~#
如果把它理解成指向下一個元素,我覺得可能更容易接受一些。所以在寫代碼的時候,不同類型的指針不要隨便賦值,除非你知道你在干什么,否則,就會出現(xiàn)一些不可預(yù)知的錯誤。比如下面的代碼:
int main()
{
int num[] = {1, 2, 3, 4, 5};
char *p = (char *)num;
p++;
printf("%d
", *(int *)p);
return 0;
}
num是個整型數(shù)組,每個元素占4個字節(jié)。
但是指針p是字符型指針,對p做自增操作,每次只能移動一個字節(jié)。很顯然,已經(jīng)不是一個完整的整數(shù)。所以這樣的賦值,盡可能避免。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
字符串
+關(guān)注
關(guān)注
1文章
566瀏覽量
20384 -
指針
+關(guān)注
關(guān)注
1文章
475瀏覽量
70457 -
代碼
+關(guān)注
關(guān)注
30文章
4670瀏覽量
67759 -
變量
+關(guān)注
關(guān)注
0文章
607瀏覽量
28257
原文標(biāo)題:指針作為循環(huán)變量
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
AD7682/AD7689內(nèi)部參考電壓能不能作為其他電路的參考電壓?
AD7682/AD7689內(nèi)部參考電壓能不能作為其他電路的參考電壓?
例如,能不能設(shè)定AD7682從REF pin輸出2.5V內(nèi)部參考電壓,接到ADA4841的正極端作為level
發(fā)表于 12-21 06:52
共享變量能不能實現(xiàn)這種功能呢
各位大神好,請問用labview能不能實現(xiàn)這樣一種功能,在前面板中的按鈕控制某一VI的運行,這一個VI的運行結(jié)果又返回到主VI,不知道用共享變量能不能實現(xiàn)。描述的不夠清楚,勿怪,謝謝。
發(fā)表于 12-30 09:52
labview中能不能記錄循環(huán)的狀態(tài)
labview中能不能記錄循環(huán)的狀態(tài),并在中途退出后再次打開恢復(fù)中間狀態(tài)
發(fā)表于 05-20 14:19
請問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ù)作為一個新生事物,許多人對它不了解,也有許多人對它一知半解。那么電池到底能不能修復(fù)呢?
發(fā)表于 11-23 10:40
?1065次閱讀
諧波治理到底能不能節(jié)電
諧波治理到底能不能節(jié)電?”這是我們做電能質(zhì)量行業(yè)經(jīng)常會被問到的一個問題。隨著國家對節(jié)能減排項目的大力支持,有不少商業(yè)人士一擁而上加入到節(jié)能行業(yè),想要分得節(jié)能市場的一杯羹。那么,通過諧波治理到底能不能實現(xiàn)節(jié)能的效果呢?
發(fā)表于 04-23 15:50
?3318次閱讀
拼接屏能不能觸屏操作?
拼接屏能不能直接觸屏操作,小編回答可以的,實際上很多客戶購買拼接屏?xí)r都會提出拼接屏能不能加觸摸的功能?我們回復(fù)是可以的,那是一種怎樣的原理呢? 拼接屏一般是用來大屏展示,用來播放文字、圖像等內(nèi)容
直流電源到底能不能驅(qū)動交流燈泡發(fā)光?
我在網(wǎng)上經(jīng)常看到有網(wǎng)友在問直流電源到底能不能驅(qū)動交流燈泡發(fā)光?事實勝于雄辯,這次專門準(zhǔn)備了一盒干電池,來實際演示一下,看看能不能發(fā)光。
評論