私はCプログラムを開発していますが、ポインタと配列に関する質問があります。配列要素のアドレスを取得する
私は、次の
配列
ポインタがあります。
GLuint *vboIds;
そして、次の関数のプロトタイプ:
void glGenBuffers(GLsizei n, GLuint *buffers);
次の文は正しいです:
glGenBuffers(1, vboIds);
をしかし、私はしたいですglGenBuffers
に2番目のインデックスを渡す関数の第2引数としてvboIdsを指定します。私はこれを入れました:
glGenBuffers(1, &&vboIds[1]);
これは間違いありませんか?
ありがとうございました。
"' 'GLuint * vboIds私は次の配列をしている" 演算子(&)の一つのアドレスを必要としています。配列!=ポインタを覚えておいてください。配列表記を使ったポインタを使った間接的な層があります。 – SiegeX
@SiegeX:私は長年Cと仕事をしておらず、ほとんどすべてを忘れてしまった。 – VansFannel
心配はいりませんが、これはCプログラマがしばしば間違っています。 "余分な間接層"を拡張するには、 'int foo [10];を宣言したと仮定します。 int * bar = foo; ' 'foo [2] = 1;'を実行すると、配列 'foo'のアドレスは既知の定数になり、値を取得するために' 2 * sizeof(int) 'がfooのアドレスに追加されます。一方、 'bar [2] = 1;'を実行すると、最初に起こることは 'bar'の値を取得し、その値を配列に渡してから' 2 * sizeof (int) 'を呼び出して値を取得します。 – SiegeX