如何直接访问结构中字段的元素

时间:2015-01-28 21:27:52

标签: c arrays pointers struct

我有如下代码示例所定义的数组结构:

struct Struct {
   float *field;
};

其中field是具有索引idx的任意长度的数组。 目前我按如下方式填写这些数组:

float *field_ptr = a->field;
field_ptr[idx] = 1.0f;

有没有直接的方法来填充没有中间field_ptr指针的数组?我尝试了几种方法,但不幸的是,我不是一个C或指针大师,所以我遇到了越界的记忆问题。

编辑1:知道这是(Py)Cuda代码的一部分可能很有用 编辑2:代码驻留在一个带有以下(指针)声明的示例函数中:

void testfunction(Struct *a)
{
    int idx = get_index();
    float *field_ptr = a->field;
    field_ptr[idx] = 1.0f;
}

1 个答案:

答案 0 :(得分:4)

当然有;只需使用:

a->field[idx] = 1.0f;

如果a的类型为Struct *

如果实例是指向结构的指针,则需要使用->运算符取消引用它,如果它不是指针,则它是.运算符。例如:

struct Struct x;
/* you need to allocate space for the floats first */
x.field[0] = value;

struct Struct *x;
/* you need to allocate space for the floats first, and x must be a valid pointer */
x->field[0] = value;