C語言- 第十八章| 指標- 指標的運算 - J.J.'s Blogs

文章推薦指數: 80 %
投票人數:10人

J.J. Huang 2019-10-22 C 瀏覽次數:7次 3 years ago. C語言- 第十八章| 指標- 指標的運算. 指標的運算. 除了:. 指定運算子 = 取址運算子 &; 取值運算子 *. Thiswebsite Archives Categories Tags About Donate RSS 歡迎!您似乎正在使用廣告攔截器。

請考慮通過禁用您的廣告攔截器來支持我。

J.J.Huang   2019-10-22   C   瀏覽次數:次 {{moment(1571706000000).fromNow()}} C語言-第十八章|指標-指標的運算 指標的運算除了: 指定運算子= 取址運算子& 取值運算子* 還有+、-、++、--、+=與-=等運算子可以使用在指標上。

指標的加法與減法與一般數值的加減法不同,在指標運算上加1,是表示前進一個資料型態的記憶體長度,例如在int型態的指標上加1,是表示在記憶體位址上前進4個位元組的長度。

12345678910111213#includeintmain(){ int*ptr=0; printf("ptr位置:%p\n",ptr); printf("ptr+1:%p\n",ptr+1); printf("ptr+2:%p\n",ptr+2); printf("ptr+3:%p\n",ptr+3); return0;} 如果宣告的是double型態的指標,則每加1就會前進8個位元組。

12345678910111213#includeintmain(){ double*ptr=0; printf("ptr位置:%p\n",ptr); printf("ptr+1:%p\n",ptr+1); printf("ptr+2:%p\n",ptr+2); printf("ptr+3:%p\n",ptr+3); return0;} 註:以上所舉的例子為指標的加法,在減法上觀念也是相同,對指標減1即是在記憶體位址上退後一個資料型態單位的長度。

12345678910111213#includeintmain(){ int*ptr=0; printf("ptr位置:%p\n",ptr); printf("ptr+1:%p\n",ptr-1); printf("ptr+2:%p\n",ptr-2); printf("ptr+3:%p\n",ptr-3); return0;} 12345678910111213#includeintmain(){ double*ptr=0; printf("ptr位置:%p\n",ptr); printf("ptr+1:%p\n",ptr-1); printf("ptr+2:%p\n",ptr-2); printf("ptr+3:%p\n",ptr-3); return0;} 註:0x00000000如果再減,會變成類似0xFFFFFFFC,這“應該”是補數的概念,如果有錯我在修正。

註:以上參考了hackersirgitbooks指標的運算 C語言-第十七章|指標-指標與記憶體位址 C語言-第十九章|指標-指標與陣列



請為這篇文章評分?