C語言精要總結-指針系列(二)
此文為指針系列第二篇:
C語言精要總結-指針系列(二)
指針運算
前面提到過指針的解引用運算,除此之外,指針還能進行部分算數運算、關系運算
指針能進行的有意義的算術運算包括加減法運算,但不包括乘除運算。并且運算存在諸多限制。
加法運算
指針加法運算只適合指針與整數,不能用在指針與指針。
指針加上或者減去一個整數n,是存儲的地址值加上或者減去n*指針指向類型的空間大小。也就是
結果指針 = 指針 ± n * 指針指向類型空間大小。
例如int類型的整數指針+1,運算結果依然是一個整型指針,其存儲的地址值為原指針值+1*4,這是因為整型變量占用4個字節(jié)的空間。這個計算結果,恰好在當前指針指向基礎上,向下偏移指向下一個相同類型的空間。如下圖
指針與整數的加減法一般用在迭代連續(xù)的內存空間-數組,如果運算得到的指針指向第一個元素之前或者最后一個元素之后,可能會產生非法讀寫內存中斷,就像引用一個未初始化的指針一樣不可預知。
指針除了可以與整數做加減運算,連個指針之間還可以做減法運算(不能做加法運算)且必須是同類型的指針。運算結果為兩個指針指向地址之間,可以存放多少此類型的變量數(或其相反數),類型為ptrdiif_t類型(一種有符號整數類型)。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數據結構來看看(二) 2017-07-26
