c - 指向二维数组的指针

标签 c arrays pointers struct

我需要访问从指向结构的指针引用的二维数组,但我不能 查看存储在此数组中的值。 我使用此处提出的方法 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/

相关文章:

c - 用于枚举格式 C 代码的 Eclipse 插件

arrays - 对 MongoDB 集合中的对象数组进行排序

c - 在C中,如何将两个char数组中的两个char字符存储到整数数组中

c - 在C中传递函数还是传递函数指针?

c - 为什么 memcmp 返回 -1 虽然相等

c - NIC 位/秒速率统计

c - C中的动态内存分配和释放

php - 带有 Laravel 5.4 的 Instagram API

c - 初始化一个包含指向结构体指针的结构体

c - 指向函数的双指针