關於C語言指標中的p++與p+i

來源:互聯網
上載者:User

標籤:

先看一組代碼:

#include <stdio.h>void main(){int i,*p,a[7];p=a;for(i=0;i<7;i++)scanf("%d",p++);printf("\n");for(i=0;i<7;i++,p++)printf("%d",*p);}

 我們輸入7個數,但輸出的結果卻是隨機數。產生的原因為程式執行完第一組for迴圈後,指標已經指到了數組後的記憶體單元,如果想要輸出該數組元素,則需重新將其首地址賦值給p(p=a)。

以下是改正的版本————————————————

當然我們還可以將p++替換為p+i;以下為參考代碼————————————————

#include <stdio.h>void main(){int i,*p,a[7];p=a;for(i=0;i<7;i++)scanf("%d",p+i);printf("\n");for(i=0;i<7;i++)printf("%3d",*(p+i));}

 其好處是從第二次迴圈後都不需要重新將指標指回數組首元素。

方法 a[0]地址 a[1]地址 a[i]地址
通過數組元素名 a[0] a[1] a[i]
通過數組名a *a *(a+1) *(a+i)
通過指標變數p *p *(p+1) *(p+i)
下標法 p[0] p[1] p[i]

因為p指向a的首地址,即a[0],所以a[i]=>*(a+i)=>*(p+i)。

關於C語言指標中的p++與p+i

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.