如果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 是指針,也就是一個變量,對它進行自增是合法的。