我需要访问从指向结构的指针引用的二维数组,但我不能 查看存储在此数组中的值。 我使用此处提出的方法 thta 通过指向 2D 数组的指针进行访问(如此处所述 Create a pointer to two-dimensional array ) 该结构封装在 2 个进程之间的碎内存区中。 该结构包含 float 的二维数组。 尽管二维数组的第一个数组中存储了值,但函数 foo 中读取的值为 0。 这是正确的访问模式吗? 差异是由于访问是通过双指针机制吗? (使用箭头符号)
typedef struct
{
float32 Position[3];
float32 MODE[4];
float32 GeneralInfo;
float32 COLOR [8][3];
} tsInputData;
typedef float32 array_of_3_float32[3];
array_of_3_float32 *p_Color;
float32* p_Position;
float32* p_Mode;
float32* p_GeneralInfo;
void Init_Host(void* InData)
{
pData = (tsInputData*)InData;
p_Position = pData->Position;
p_Mode = pData->MODE;
p_GeneralInfo = &(pData->GeneralInfo);
p_Color = pData->COLOR;
}
int foo()
{
float32 var = p_Color[0][0];
}
最佳答案
你的做法是正确的,虽然有点麻烦。您可以像这样定义二维数组指针:
float32 (*p_Color)[3]; // pointer to array of blocks of three floats each
在 C89 及更高版本中,您还可以为大小使用运行时变量:
size_t num_cols;
float32 (*p_Color)[num_cols];
关于c - 指向二维数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21676301/