程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 指針與數組(一)

指針與數組(一)

編輯:C語言基礎知識

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved