1.7 KiB
1.7 KiB
C 语言中的指针数组
原文:https://overiq.com/c-programming-101/array-of-pointers-in-c/
最后更新于 2020 年 7 月 27 日
就像我们可以声明一个由int、float或char等组成的数组一样,我们也可以声明一个指针数组,下面是做同样事情的语法。
语法: datatype *array_name[size];
让我们举个例子:
int *arrop[5];
这里arrop是5整数指针的数组。这意味着这个数组可以保存5整数变量的地址。换句话说,您可以将指向int类型指针的5指针变量分配给该数组的元素。
下面的程序演示了如何使用指针数组。
#include<stdio.h>
#define SIZE 10
int main()
{
int *arrop[3];
int a = 10, b = 20, c = 50, i;
arrop[0] = &a;
arrop[1] = &b;
arrop[2] = &c;
for(i = 0; i < 3; i++)
{
printf("Address = %d\t Value = %d\n", arrop[i], *arrop[i]);
}
return 0;
}
预期输出:
Address = 387130656 Value = 10
Address = 387130660 Value = 20
Address = 387130664 Value = 50
工作原理:
注意我们如何分配a、b和c的地址。在第 9 行,我们将变量a的地址分配给数组的第 0 个元素。类似地,b和c的地址分别分配给第一和第二元素。此时,arrop看起来是这样的:
arrop[i]给出数组第 I 个元素的地址。所以arrop[0]返回变量a的地址,arrop[1]返回b的地址等等。要获取地址值,请使用间接运算符(*)。
*arrop[i]
因此,*arrop[0]给出地址arrop[0]处的值,类似地*arrop[1]给出地址arrop[1]处的值,以此类推。
