[C]指针数组和数组指针

[C]指针数组和数组指针

数组相关知识点:

  • 定义数组时必须明确指定数组元素的个数,不能使用变量指定数组元素的个数,只能使用常量或常量表达式
  • 数组名实际上就是指向数组第一个元素的指针

指针数组:是指所有元素都是指针的数组, 即“存储指针的数组”,如 int *p[10]

数组指针:是指指向一个数组的指针,即“指向数组的指针”,如 int (*p)[10]

 

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    char array[5] = {'a', 'b', 'c', 'd', 'e'};
    //定义一个指针数组
    char *point_array[5];
    //定义一个数组指针,使用数组array的首地址初始化
    char (*array_point)[5] = &array;

    int i;

    for(i = 0; i < 5; i++) {
	//使用数组a的第i个元素的地址给指针数组第i个元素赋值
	point_array[i] = &array[i];
	//输出原数组的第i个元素的值
	printf("a[%d] = %c\n", i, array[i]);
	//输出指针数组第i个元素的值
	printf("*point_array[%d] = %c\n", i, *point_array[i]);
	//输出数组指针所指向数组的第i个元素的值
	printf("*array_point[%d] = %c\n\n", i, (*array_point)[i]);
    }

    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注