我正在尝试解决以下问题但尚未成功:
我有两个diwmensional指针数组:
int* a[16][128];
现在我想以这种方式创建一个指向这个数组的指针,我可以在其上使用指针算法。 因此,像这样:
ptr = a;
if( ptr[6][4] == NULL )
ptr[6][4] = another_ptr_to_int;
我已经尝试了一些变化,但它在第一行或if条件下都失败了。
那么,怎么解决呢?我想避免模板类等。代码是嵌入式应用程序的时间关键部分,内存非常有限。因此,我希望ptr
只有sizeof(int*)
个字节长。
答案 0 :(得分:2)
指向数组第一个元素的指针(这是你想要的)可以声明为
cityId = 1
startDate = 2017-01-25
endDate = 2017-01-26
指向数组本身的指针是
int* (*ptr)[128];
而不是你正在寻找的东西。
答案 1 :(得分:1)
你似乎想要的东西:
int* (*ptr)[128] = a;
指向数组的实际指针:
int* (*ptr)[16][128] = &a;
答案 2 :(得分:0)
从一维数组的数组指针基础开始,[tutorialspoint] [1]有一个非常容易理解的描述。从他们的例子来看:
#include <stdio.h>
int main () {
/* an array with 5 elements */
double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
double *p;
int i;
p = balance; //Here the pointer is assign to the start of the array
/* output each array element's value */
printf( "Array values using pointer\n");
for ( i = 0; i < 5; i++ ) {
printf("*(p + %d) : %f\n", i, *(p + i) );
}
printf( "Array values using balance as address\n");
for ( i = 0; i < 5; i++ ) {
printf("*(balance + %d) : %f\n", i, *(balance + i) ); // Note the post increment
}
return 0;
}
有一些描述2D数组的相关堆栈溢出答案: How to use pointer expressions to access elements of a two-dimensional array in C?
Pointer-to-pointer dynamic two-dimensional array
how to assign two dimensional array to **pointer ?
Representing a two-dimensional array assignment as a pointer math?
[1]: https://www.tutorialspoint.com/cprogramming/c_pointer_to_an_array.htm