指针与数组

来源:互联网 发布:淘宝汽车用品店名大全 编辑:程序博客网 时间:2024/05/21 19:48

指针与数组变着花样相互缠绵,搞得众人叫苦不堪,今天就让我来揭开它们的真面目!

指针与数组有以下三种缠绵方式:

1. 指向数组元素的指针

这里写图片描述

2. 指向数组的指针

这里写图片描述

3. 指针数组

这里写图片描述

下面对三种方式进行辨析与举例

首先要注意的是,指针指向一块数据其实包含了两部分信息,一是数据的地址,二是数据的大小,这才有了“指向数组元素的指针”和“指向数组的指针”的区别:他们指向同个地址,但是前者指向的数据的大小是一个数组元素的大小,而后者指向的数据的大小是整个数组的大小。

1. 指向数组元素的指针

int array[2][4];int *p_element = array;// 等价于int *p_element = &array[0][0];

此时p_element指向数组的第一个元素array[0][0];

执行增量计算:

p_element++;

此时p_element指向数组的第二个元素array[0][1];

2. 指向数组的指针(一般用于多维数组)

int array[2][4];int (*p_array)[4];p_array = array;

此时p_array指向一维数组array[0](包含四个元素array[0][0]、array[0][1]、array[0][2]、array[0][3]);

执行增量运算:

p_array++;

此时p_array指向一维数组array[1](包含四个元素array[1][0]、array[1][1]、array[1][2]、array[1][3],它们也可以表示为(*p_array[0]、*p_array[1]、*p_array[2]、*p_array[3]));

3. 指针数组

int a, b, c, d;int *array_p1[4] = {&a, &b, &c, &d};

四个数组元素都是指针,分别指向整型变量a、b、c、d

int array[2][4];int *array_p2[2] = {array[0], &array[1]};

两个数组元素都是指针,分别指向整型变量array[0][0]和array[1][0]

1 0
原创粉丝点击