如何直接访问结构中字段的元素
How to access an element of a field in a structure directly
我在下面的代码示例中定义了数组结构:
struct Struct {
float *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;
}
当然有;只需使用:
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;
我在下面的代码示例中定义了数组结构:
struct Struct {
float *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;
}
当然有;只需使用:
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;