目的Cの基本浮動小数点配列をNULL終了する必要がありますか?目的のCの浮動小数点配列
私は基本的なfloat配列があります。
float data[] = {0.5, 0.1, 1};
を、私ははsizeof(データ)を行うとき、私は "12" を取得します。
目的Cの基本浮動小数点配列をNULL終了する必要がありますか?目的のCの浮動小数点配列
私は基本的なfloat配列があります。
float data[] = {0.5, 0.1, 1};
を、私ははsizeof(データ)を行うとき、私は "12" を取得します。
1つを作成する場合は、nullを終了する必要はありません。そして一般にfloat[]
を取るメソッドは、いくつの要素があるかを示すためにsizeパラメータを取るでしょう。
float
がアーキテクチャ上で4バイトであり、そのうち3つがあるため、sizeof(data) = 12
が得られます。
私はforループを設定するために12の代わりに3を得るために、要素数を得るために別の関数を使う必要がありますか? for(int i = 1; i
'count = sizeof(data)/ sizeof(float)'です。また、http://en.wikipediaも参照してください。org/wiki/Sizeof#Using_sizeof_with_arrays – mattjgalloway
@Ayrad - C配列の要素数を取得する標準的で信頼できる方法はありません。宣言されたサイズの配列に対して 'sizeof(array)/ sizeof(element)'を実行できますが、動的に割り当てられた配列やパラメータとして渡された配列に対しては機能しません。 (配列に宣言されたサイズがある場合は、最初に計算を行うことに意味がありません。宣言されたサイズを使用してください)。 –
sizeof
パラメータが占有するメモリ量(バイト単位)を返します。あなたの場合、すべてfloat
は4バイトを占め、したがって4 * 3 = 12です。
ホットリックスは、mattjgallowayの答えのコメントによると、C配列の要素の数を取得する標準的な方法はありません。
size = sizeof(data)/sizeof(float)
を使用しますが、パラメータとして配列を渡すと機能しないので、この方法を使用する際は注意が必要です。
一般的なアプローチは、変数にサイズを格納し、それをforループの上限として使用することです(多くの場合、配列には配列のサイズを取得するための追加パラメータが必要です)。
ヌル終端された配列を使用すると、配列全体を繰り返し処理でき、i
-esim要素がヌルの場合(つまり、strcmp
のようなメソッドのアプローチ)、停止することができます。
タイプfloat
の値は決してnullになることはありません。そのため、nullのあるタイプfloat
の配列を終了することはできません。あるプリミティブ型の変数には常に数値があり、さまざまなNULL定数(Objective-C nil
、Nil
、NULL、および'\0'
)のリテラル値は0
です。これは明らかにa float
。あなたは警告なしに次の行をコンパイルすることができても、そう
、
float x = NULL;
...それは同じ。このような結果だろう:配列内のNULL定数を挿入
float x = 0;
をfloat
のタイプは、0.0
またはその他の一定のゼロ値を挿入することと区別できません。
どのような文脈で使用しますか?この配列に供給される関数がヌル終了する必要がある場合は、yesにします。それが必要でなければ、あなたはする必要はありません。 –
こんにちは、私はそれを定期的なループでループするので、私はそれらの点をグラフにプロットします。宣言でnullを終了する必要がありますか? – Ayrad