次のコードサンプルのように定義された配列の構造があります。
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;
}
もちろんあります。使用するだけです:
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;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加