如果pa指向数组中的某个元素,那么pa+1将指向下一个元素,pa+i指向下i个元素。所以,若果pa指向a[0],那么*pa其实就是a[0],*(pa+1)就是a[1],*(pa+i)就是a[i]。根据这个思路,我们可以使用指针来访问数组。 01 #include <stdio.h> 02 int main(int argc, char *argv[]) 03 { 04 int score[10]={76,85,90,67,59,79,82,95,91,65}; 05 int wait, length, i; 06 length = sizeof(score) / sizeof(score[0]); 07 for(i = 0; i < length; i++) 08 { 09 printf("%d \n", *(score + i)); 10 } 11 scanf("%d", &wait); 12 } 程序输出: 01 76 02 85 03 90 04 67 05 59 06 79 07 82 08 95 09 91 10 65 数组下标与指针关系很密切。执行语句 pa = &a[0] 后,pa 和 a 就具有相同的值了,并且 *pa=a[0]。实际上C语言在计算数组下标时也是使用指针来完成的。下标与指针其实是等价的。 当把一个数组名传递给一个函数的时候,实际上传递的是该数组的第一个元素的地址。所以,数组名参数必须是一个指针。 计算字符串长度的程序可以写成以下: view source print ? 1 int strlen(char *s) 2 { 3 int n; 4 5 for(n = 0; *s != '\0'; s++) 6 n++; 7 return n; 8 } s 是指针,也就是一个变量,对它进行自增是合法的。