C 指向2D数组的指针数组的最大大小?
我使用以下命令来动态选择使用哪个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]) 谢谢 您不能更改常量指针的大小
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;