nlu*_*igi 1 c arrays struct pointers
我有如下代码示例中定义的数组结构:
struct Struct {
float *field;
};
Run Code Online (Sandbox Code Playgroud)
其中 field 是具有 index 的任意长度的数组idx。目前我正在按如下方式填充这些数组:
float *field_ptr = a->field;
field_ptr[idx] = 1.0f;
Run Code Online (Sandbox Code Playgroud)
有没有没有中间 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;
}
Run Code Online (Sandbox Code Playgroud)
当然有;只需使用:
a->field[idx] = 1.0f;
Run Code Online (Sandbox Code Playgroud)
如果a是类型Struct *。
如果实例是指向结构的指针,则需要使用->运算符取消引用它,如果它不是指针,则是.运算符。例子:
struct Struct x;
/* you need to allocate space for the floats first */
x.field[0] = value;
Run Code Online (Sandbox Code Playgroud)
和
struct Struct *x;
/* you need to allocate space for the floats first, and x must be a valid pointer */
x->field[0] = value;
Run Code Online (Sandbox Code Playgroud)