如果pa指向數組中的某個元素,那麼pa+1將指向下一個元素,pa+i指向下i個元素。所以,若果pa指向a[0],那麼*pa其實就是a[0],*(pa+1)就是a[1],*(pa+i)就是a[i]。根據這個思路,我們可以使用指針來訪問數組。
#include <stdio.h>
int main(int argc, char *argv[])
{
int score[10]={76,85,90,67,59,79,82,95,91,65};
int wait, length, i;
length = sizeof(score) / sizeof(score[0]);
for(i = 0; i < length; i++)
{
printf("%d \n", *(score + i));
}
scanf("%d", &wait);
}
程序輸出:
76 85 90 67 59 79 82 95 91 65
數組下標與指針關系很密切。執行語句 pa = &a[0] 後,pa 和 a 就具有相同的值了,並且 *pa=a[0]。實際上C語言在計算數組下標時也是使用指針來完成的。下標與指針其實是等價的。
當把一個數組名傳遞給一個函數的時候,實際上傳遞的是該數組的第一個元素的地址。所以,數組名參數必須是一個指針。
計算字符串長度的程序可以寫成以下:
int strlen(char *s)
{
int n;
for(n = 0; *s != '\0'; s++)
n++;
return n;
}
s 是指針,也就是一個變量,對它進行自增是合法的。