我开始阅读一些关于 C 中指针的文章,但我有一个我不明白的例子。
该示例来自此处:http ://en.wikibooks.org/wiki/C_Programming/Pointers_and_arrays
这里是:
让我们看一个稍微不同的问题。我们想要一个二维数组,但我们不需要所有的行都具有相同的长度。我们要做的是声明一个指针数组。下面的第二行将 A 声明为一个指针数组。每个指针都指向一个浮点数。这是一些适用的代码:
float linearA[30];
float *A[6];
A[0] = linearA; /* 5 - 0 = 5 elements in row */
A[1] = linearA + 5; /* 11 - 5 = 6 elements in row */
A[2] = linearA + 11; /* 15 - 11 = 4 elements in row */
A[3] = linearA + 15; /* 21 - 15 = 6 elements */
A[4] = linearA + 21; /* 25 - 21 = 4 elements */
A[5] = linearA + 25; /* 30 - 25 = 5 elements */
A[3][2] = 3.66; /* assigns 3.66 to linearA[17]; */
A[3][-3] = 1.44; /* refers to linearA[12];
negative indices are sometimes useful.
But avoid using them as much as possible. */
我的问题是为什么A[0]
指针只指向五个元素而不是 ALL of linearA
,因为数组的名称是指向其第一个成员的指针。
并且A[1] = linearA + 5;
是连续 6 个元素 - 出于同样的原因?不A[1]
应该是指向第 6 个成员的指针linearA
吗?
有人可以解释我的错误在哪里吗?