ホームページ >バックエンド開発 >C++ >関数パラメータとして渡される C 配列のサイズを確認するにはどうすればよいですか?

関数パラメータとして渡される C 配列のサイズを確認するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-24 08:17:10584ブラウズ

How Can I Determine the Size of a C   Array Passed as a Function Parameter?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。