返回首页   进站必读

7.4 指针访问数组


7.4 指针访问数组

先看个例子,有如下语句:

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;
}