C 指向2D数组的指针数组的最大大小?

C 指向2D数组的指针数组的最大大小?,c,arrays,pointers,C,Arrays,Pointers,我使用以下命令来动态选择使用哪个2D数组 const prog_uint16_t (*p)[8]; p = arrayname; 这适用于大小为[3][8]的2D数组,但我需要[10][1025]。 当我尝试这个: const prog_uint16_t (*p)[1025]; p = arrayname; 我收到一个“无法转换”错误 有什么想法吗?谢谢 编辑: 下面是2D数组的工作声明。一个没有被声明为相同的方式,只是有不同数量的条目([10][1025]) 谢谢 您不能更改常量指针的大小

我使用以下命令来动态选择使用哪个2D数组

const prog_uint16_t (*p)[8];
p = arrayname;
这适用于大小为[3][8]的2D数组,但我需要[10][1025]。
当我尝试这个:

const prog_uint16_t (*p)[1025];
p = arrayname;
我收到一个“无法转换”错误

有什么想法吗?谢谢

编辑:

下面是2D数组的工作声明。一个没有被声明为相同的方式,只是有不同数量的条目([10][1025])


谢谢

您不能更改常量指针的大小和类型当然您可以更改指向的数据或

否则,但无法调整此类型的p指针的大小

看这段代码也许对你有帮助

const int x;             // x cannot be modified

const int* pX = &x;      // pX is the address of a const int
                 // and can't be used to change an int

 *pX = 4;                 // illegal - can't use pX to change an int

 int* pInt;       // address of normal int

  pInt = pX;       // illegal - cannot convert from const int* to int*

成功

指向二维数组的指针将采用以下形式:

prog_uint16_t (*p)[x][y];
例如:

const prog_uint16_t array[1][2] = {{1,2}};
const prog_uint16_t (*p)[1][2] = &array;

显示
arrayname
的声明。而且,
(*p)[8]
不是指向2d数组的指针。这不是二维阵列。这是一个指向prog_uint16_t的一维指针数组。@ErikJohnson:不,
p
是指向8常量数组的指针
prog_uint16_t
我试图指向的数组是一个二维数组。请参见编辑<代码>施工进度(*p)[x][y]无法将中的“const prog_int16_t()[10][1025]{aka const short int()[10][1025]}”转换为“const prog_uint16_t()[10][1025]{aka const short unsigned int()[10][1025]}”assignment@mattomatto:您的声明或作业有误,但您尚未向我们展示。您好,谢谢您的回复。我没有试图调整指针的大小,我只是在尝试将指针指向数组时出错,尽管声明它的大小是正确的。。
const prog_uint16_t array[1][2] = {{1,2}};
const prog_uint16_t (*p)[1][2] = &array;