亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

水滴石穿C語言之指針步進辨析

2019-11-17 06:21:22
字體:
來源:轉載
供稿:網友
基本解釋

  通過上一篇的分析,我們已經很清楚地知道:指針不是一個簡單的類型,它是一個本身和所指向物相復合的類型。指針的算術運算(如步進)與指針所指向物的類型密切相關。

  問題:指針步進 & 步進單位

  下面的代碼中打印出的結果是幾?

int arContext[5] ={0,1,2,3,4}, i, *pAr;
pAr = arContext;
PRintf ("%d/n", *(pAr + 3 * sizeof (int)));
  答案與分析:

  這段代碼沒有正確答案,因為這段代碼是錯的,printf將打出無法猜測的內存區的值,其中的原因如下:

  在C語言中,指針總是按照它所指向的對象的大小步進。在上面的例子中,pAr是指向整數類型變量的指針,一個整數是4個字節(默認CPU字長是32位),pAr + 1就指向下一個整數,也就是指針后移4個字節,而不是說將地址只移動一個字節。

  因為C語言編譯器知道每個指針的類型,因此對指針的運算是會自動把所指類型的Size考慮進去的。

  pAr + 3 * sizeof (int) = pAr + 3 * 4 = pAr + 12 ,因此pAr指向了數組的第13個整數元素。而數組本身才5個元素,pAr早已經超出了界限,所指向的地方當然就是無人可知道的東西了,具體指向什么東西,各種不同的編譯器互不相同??傊?,肯定不能打印出我們想要的值就是了。

  指針不是一個簡單的類型,它是一個和指針所指物的類型相復合的類型。因此,它的算術運算與指針所指物的類型密切相關,在C++語言中也是同樣。

  再比如下面的例子:

int a[8];
int* p = a;
int* q = p + 3;
p++;
  指針的加減并不是指針本身的二進制表示加減,要記住,指針是一個元素的地址,它每加一次,就指向下一個元素。所以:

int* q = p + 3;
  q指向從p開始的第三個整數。

  p++;

  p指向下一個整數。
問題:指針步進 & 步進單位轉換

  我有一個char *類型的指針,恰好指向了一個int類型的值,我想讓這個指針跳過int指向下一個char,下面的代碼可以達到這個目的嗎?

((int *)p)++;
  答案與分析:

  可以。

  首先我們要清楚C語言中左值和右值的概念,C語言中左值是指可以放在“=”左側,即可以被賦值,右值是可以放在“=”的右邊,即可以賦給其它變量的值。++是單目操作符,它將一個變量的值加1然后再賦給這個變量,因此它需要的操作數應該既可以放在“=”號的左邊,也可以放在“=”的右邊。原則上講,類型強制轉換的結果是右值而不是左值。所以,(int *)p的結果在這個表達式中是++的右值,而++的左值依舊是p,而不是(int *)p。

  這個問題的核心正是告訴我們類型強制轉換的結果是右值而不是左值。

  另外,我們可以使用一個簡單的辦法達到相同的目的:

p += sizeof(int);
  p是char *類型的指針,它的步進長度是1,加上一個整數所占的長度,就是跳過了一個整數所占的空間。

  所以,有時候,ULONG *p; 想要增加8個字節,可以作如下強制轉換:

(ULONG *)((UCHAR *)p+8
  問題:指針步進 & void 指針

  為什么我對void *類型的指針進行運算,編譯器會報告如下錯誤?

error C2036: 'void *' : unknown size
  答案與分析:

  在C語言中,所有的指針遠算,例如+、—、*、/,都是將它所指向的對象的尺寸考慮進取的。例如‘char*’ 類型的指針加1,就是地址向后移動一個字節;而‘int*’類型指針加1,就是移動4個字節。但是,對于‘void*’型的指針呢?‘void *’指針在C標準中被規定可以強制轉換成任何類型的指針而不會丟失數據,它的大小具體的編譯器各不相同,也就是說,編譯器也不知道void到底有多大,因此,無法對‘void*’類型的指針進行算術運算。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频在线观看日韩| 一区二区三区久久精品| 精品久久久免费| 亚洲国产女人aaa毛片在线| 这里精品视频免费| 久久久久久中文字幕| 中文字幕亚洲一区| 欧美激情在线有限公司| 欧美性生活大片免费观看网址| 超薄丝袜一区二区| 久久视频国产精品免费视频在线| 日本欧美在线视频| 精品久久久久久中文字幕一区奶水| 欧美另类第一页| 欧美专区在线观看| 色樱桃影院亚洲精品影院| 亚洲免费福利视频| 日韩中文字幕不卡视频| 日韩精品视频三区| 久久久国产精品免费| www.亚洲男人天堂| 九九热这里只有在线精品视| 国产日韩精品一区二区| 国产成人精品av在线| 国产精品欧美一区二区| 国产a∨精品一区二区三区不卡| 亚洲影视九九影院在线观看| 久久伊人91精品综合网站| 亚洲sss综合天堂久久| 日韩精品中文字| 欧美日韩国产综合新一区| 亚洲成人激情图| 97色伦亚洲国产| 久久久黄色av| 欧美日韩在线一区| 中文字幕欧美在线| 久热爱精品视频线路一| 97国产一区二区精品久久呦| 亚洲欧美日韩第一区| 一本大道亚洲视频| 国产欧美久久一区二区| 国产精品入口免费视频一| 一个人看的www久久| 搡老女人一区二区三区视频tv| 欧美综合一区第一页| 欧美精品18videos性欧美| 日本91av在线播放| 91久久久久久久久久久久久| 欧美激情va永久在线播放| 午夜精品www| 国产精品黄色影片导航在线观看| 视频在线观看99| 亚洲精品日韩激情在线电影| 色老头一区二区三区在线观看| 欧美与黑人午夜性猛交久久久| 裸体女人亚洲精品一区| 日韩高清中文字幕| 成人在线免费观看视视频| 国产精品视频专区| 欧美性猛交xxxx乱大交3| 亚洲国产毛片完整版| 久久久电影免费观看完整版| 国产精品成人一区| 日韩中文字幕不卡视频| 91亚洲精品久久久久久久久久久久| 亚州国产精品久久久| 久久精品91久久香蕉加勒比| 亚洲伦理中文字幕| 91最新国产视频| 欧美在线亚洲一区| 欧美一级黄色网| 26uuu日韩精品一区二区| 亚洲精品综合久久中文字幕| 在线成人激情黄色| 亚洲一级黄色av| 日韩二区三区在线| 国产精品一区久久| 亚洲第一网站男人都懂| 午夜精品久久久久久久99热| 最近2019中文字幕第三页视频| 亚洲乱码国产乱码精品精天堂| 欧美激情aaaa| 91免费在线视频网站| 久久精品中文字幕免费mv| 久久精品国产精品| 日韩视频在线免费| 黑人狂躁日本妞一区二区三区| 欧美一区二区.| 国产精品久久久久久av福利| 欧美另类高清videos| xxxxx成人.com| 欧美性高潮在线| 亚洲成人在线视频播放| 亚洲男人天堂2023| 91av在线不卡| 91av在线免费观看视频| 一区二区av在线| 日韩欧美在线视频| 日本aⅴ大伊香蕉精品视频| 国产精品久久久久秋霞鲁丝| 欧美激情va永久在线播放| 日本亚洲欧洲色α| 狠狠色香婷婷久久亚洲精品| 亚洲成人网在线| 国产成人jvid在线播放| 欧美在线一级va免费观看| 精品国产一区二区三区四区在线观看| 亚洲a一级视频| 中文字幕精品一区二区精品| 亚洲激情在线观看视频免费| 91精品国产高清久久久久久久久| 91久久在线播放| 国色天香2019中文字幕在线观看| 久久深夜福利免费观看| 成人xxxx视频| 亚洲人午夜色婷婷| 日韩高清人体午夜| 自拍偷拍亚洲精品| 亚洲国产精品久久久| 黑人精品xxx一区一二区| 原创国产精品91| 亚洲一级一级97网| 亚洲а∨天堂久久精品喷水| 日韩日本欧美亚洲| 欧美最猛性xxxxx免费| 久久久伊人日本| 国产欧美一区二区三区久久人妖| 日韩高清电影好看的电视剧电影| 国产精品自产拍在线观看| 一区国产精品视频| 乱亲女秽乱长久久久| 在线观看日韩欧美| 欧美激情2020午夜免费观看| 一区二区三区回区在观看免费视频| 亚洲精品视频二区| 亚洲va国产va天堂va久久| 5566日本婷婷色中文字幕97| 黑丝美女久久久| 久久久av一区| 青青草99啪国产免费| 亚洲大胆人体在线| 性夜试看影院91社区| 欧美电影免费观看高清完整| 成人久久精品视频| 亚洲精品乱码久久久久久按摩观| 欧美在线观看一区二区三区| 欧美另类极品videosbest最新版本| 欧美高清激情视频| 国产欧美日韩中文字幕在线| 91精品久久久久久久久久久久久久| 久久精品99久久久香蕉| 欧洲日本亚洲国产区| 91网站免费看| 91精品国产色综合久久不卡98| 亚洲精品98久久久久久中文字幕| 亚洲欧美精品中文字幕在线| 青青草原成人在线视频| 亚洲视频在线播放| 欧美亚洲国产视频| 日韩美女免费视频| 5566成人精品视频免费| 国产精品免费久久久久久| 国外成人在线视频| 色婷婷av一区二区三区久久|