娓娓道來c指標 (7)指標運算

來源:互聯網
上載者:User

標籤:指標   指標運算   指標類型   

                                (7)指標運算

在前幾篇文章中,我們已經見過指標運算的使用情境,並多次使用指標運算來進行驗證。這裡我們來特別地總結下,指標運算的本質含義。

在c語言中,假設p、pa、pb都是某種類型的指標,這樣的運算被稱為指標運算:

  1.  
  2. ,前提:pa和pb類型相同。
其本質是1.。2.,得到的是邏輯儲存單元數,而不是簡單的物理位元組數。代碼驗證
int main(void){int array[] = {1, 2, 3};int *pa = array;int *pb = array + 3;printf("sizeof(pa)...%d\n", sizeof(pa));printf("pb-pa...%d\n", pb - pa);printf("((unsigned)pb-(unsigned)pa)/sizeof(pa)...%d\n", ((unsigned)pb - (unsigned)pa) / sizeof(pa));return 0;}
運行

當然,把pa-pb解釋成((char*)pa-(char*)pb)/sizeof(pa)也是可以的。
指標運算總結指標儲存的是地址,地址本質是一個unsigned類型的整數,對於p+1,並不是簡單的把p的值往前移動一個位元組。一句話: 指標運算緊緊依賴於指標的類型。所以指標運算中,清楚指標的類型是重要的。這也是為什麼:可以用指標運算來測試指標類型。
必須指出,pa+pb這樣的運算是不存在的!


專欄目錄:C指標

娓娓道來c指標 (7)指標運算

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.