C 関数パラメーターでの配列サイズの決定
C では、配列は関数パラメーターとして渡されると暗黙的にポインターに変換されます。これは、サイズ情報が失われ、関数内で配列のサイズに直接アクセスできないことを意味します。
コード スニペット内:
void makeVectorData(float p_vertData[]) { int num = (sizeof(p_vertData)/sizeof(int)); }
sizeof(p_vertData) はサイズを取得します。配列自体ではなく、配列へのポインタの。ポインタには 32 ビットが必要なので (32 ビット システムでは)、配列の実際のサイズに関係なく、num は 1 になります。
解決策:
配列のサイズにアクセスするには、サイズを示す別のパラメータを渡すことができます:
void makeVectorData(float p_vertData[], int size) { int num = size; }
呼び出し元の場合は、配列のサイズを引数として指定します:
makeVectorData(verts, sizeof(verts) / sizeof(float));
以上が関数パラメータとして渡される C 配列のサイズを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。