C++で動的に割り当てられたintの配列のサイズを取得するには?
例:(/これは常に 4 を 4 * 8 = 32 ビットとして与え、サイズは int です)
bool tabSum(int* t, int& p, int& np){
cout<<"\n\n";
cout<<sizeof(*t)<<endl;
}
できません。パラメーターとして渡されると、配列はポインターに減衰します。Andsizeof
はコンパイル時の演算子です。
代わりに使用することをお勧めしますstd::vector
。
それは不可能。
ポインターを引数として使用し、それが配列であることを期待するすべての適切な関数は、要素の数を表す 2 番目のパラメーターを常に受け取ります。
STL で使用される別の方法は、配列内の最後の項目の 1 ステップ後のポインターを終了境界として使用することです。STL イテレータは、begin() および end() メソッドを使用してこのアプローチを抽象化します。このアプローチにより、size_t などの個別の数値データ型も不要になります。
この規則の注目すべき例外は、NULL で終了する文字列を予期する文字列関数ですが、その特定のアプローチはセキュリティ上の問題が発生しやすく、std::string クラスを使用することが推奨されます。
これはできません。他の使用法ですでに述べたように、長さを追加の変数に保持するか、独自の malloc/realloc クラスを作成して、小さなヘルパーになり、それらを追跡します。