我有如下代码示例所定义的数组结构:
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;
}
答案 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;