C 语言 指针数组
在我们继续学习指针数组的概念之前,先来看一个范例,它用到了一个由 4 个整数组成的数组
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> const int MAX = 3; int main () { int var[] = {9, 99, 999, 9999}; int i; for (i = 0; i < MAX; i++) { printf("Value of var[%d] = %d\n", i, var[i] ); } printf("\n"); return 0; }
编译和运行上面的范例,输出结果如下
$ gcc main.c && a.out Value of var[0] = 9 Value of var[1] = 99 Value of var[2] = 999
可能存在一种情况,我们想要让数组存储指向 int 或 char 或其他数据类型的指针。
比如下面这种一个指向整数的指针数组的声明:
int *ptr[MAX];
ptr 声明为一个数组,由 MAX 个整数指针组成。 因此,ptr 中的每个元素,都是一个指向 int 值的指针。
下面的范例把 4 个整数保存到一个指针数组中
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> const int MAX = 4; int main () { int var[] = {9, 99, 999, 9999}; int i, *ptr[MAX]; for ( i = 0; i < MAX; i++) { ptr[i] = &var[i]; /* 赋值为整数的地址 */ } for ( i = 0; i < MAX; i++) { printf("Value of var[%d] = %d\n", i, *ptr[i] ); } printf("\n"); return 0; }
编译和运行上面的代码,输出结果如下
$ gcc main.c && a.out Value of var[0] = 9 Value of var[1] = 99 Value of var[2] = 999 Valu
也可以用一个指向字符的指针数组来存储一个字符串列表
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> const int MAX = 4; int main () { char *site[] = { "baidu.com", "tencent.com", "twle.cn", "didi.com", }; int i = 0; for ( i = 0; i < MAX; i++) { printf("Value of site[%d] = %s\n", i, site[i] ); } return 0; }
编译和运行上面的代码,输出结果如下
$ gcc main.c && a.out Value of site[0] = baidu.com Value of site[1] = tencent.com Value of site[2] = twle.cn Value of site[3] = didi.com