指標與數組(一)

來源:互聯網
上載者:User

變數在記憶體存放是有地址的,數組在記憶體存放也同樣具有地址。對數組來說,數組名就是數組在記憶體安放的首地址。指標變數是用於存放變數的地址,可以指向變數,當然也可存放數組的首址或數組元素的地址,這就是說,指標變數可以指向數組或數組元素,對數組而言,數組和數組元素的引用,也同樣可以使用指標變數。下面就分別介紹指標與不同類型的數組。

6.4.1指標與一維數組

假設我們定義一個一維數組,該數組在記憶體會有系統分配的一個儲存空間,其數組的名字就是數組在記憶體的首地址。若再定義一個指標變數,並將數組的首址傳給指標變數,則該指標就指向了這個一維數組。我們說數組名是數組的首地址,也就是數組的指標。而定義的指標變數就是指向該數組的指標變數。對一維數組的引用,既可以用傳統的數組元素的下標法,也可使用指標的表示方法。

int a[10],*ptr;/*定義數組與指標變數*/

做賦值操作:

ptr=a;或ptr=&a[0];

則ptr就得到了數組的首址。其中,a是數組的首地址,&a[0]是數組元素a[0]的地址,由於a[0]的地址就是數組的首地址,所以,兩條賦值操作效果完全相同。指標變數ptr就是指向數組a的指標變數。

若ptr指向了一維數組,現在看一下C規定指標對數組的表示方法:

1)ptr+n與a+n表示數組元素a[n]的地址,即&a[n]。對整個a數組來說,共有10個元素,n的取值為0~9,則數組元素的地址就可以表示為ptr+0~ptr+9或a+0~a+9,與&a[0]~&a[9]保持一致。

2)知道了數組元素的地址表示方法,*(ptr+n)和*(a+n)就表示為數組的各元素即等效於a[n]。

3)指向數組的指標變數也可用數組的下標形式表示為ptr[n],其效果相當於*(ptr+n)。

[例6-5]/*以下標法輸入輸出數組各元素。

下面從鍵盤輸入10個數,以數組的不同引用形式輸出數組各元素的值。

#include <stdio.h>
main()
{
int n,a[10],*ptr=a;
for(n=0;n<=9;n++)
scanf("%d",&a[n]);
printf("1------output!\n");
for(n=0;n<=9;n++)
printf("%4d",a[n]);
printf("\n");
}

運行程式:

RUN
1234567890¿
1------output!
1234567890

[例6-6]採用指標變數表示的地址法輸入輸出數組各元素。

#include <stdio.h>
main()
{
int n,a[10],*ptr=a;/*定義時對指標變數初始化*/
for(n=0;n<=9;n++)
scanf("%d",ptr+n);
print f("2------output!\n");
for(n=0;n<=9;n++)
print f("%4d",*(ptr+n));
print f("\n");
}

運行程式:

RUN
1234567890¿
2------output!
1234567890

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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