先看个例子,有如下语句:
int a[10];
int *pa = &a[0];
pa++;
首先指针pa指向a[0]的地址,注意后缀运算符的优先级高于单目运算符,所以是取a[0]的地址,而不是取a的地址。然后pa++让pa指向下一个元素(也就是a[1]),由于pa是int *指针,一个int型元素占4个字节, 所以pa++使pa所指向的地址加4,注意不是加1。
示例:输出数组中全部的元素。
假设有一个a数组,整型,有10个元素。要输出个元素的值有3种方法。
1).下标法:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[10];
int i;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("\n");
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
2).通过数组名计算数组元素地址,找出元素的值。
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[10];
int i;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("\n");
for (i = 0; i < 10; i++)
printf("%d ", *(a + i));
printf("\n");
return 0;
}
3).用指针变量指向数组元素。
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[10];
int *p, i;
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("\n");
for (p = a; p < (a + 10); p++)
printf("%d ", *p);
printf("\n");
return 0;
}