私はJavaを使用しているC言語を使い慣れていません。私のCコードを実行するたびにセグメンテーションフォルトが返される
私は次のような些細なプログラムをコンパイルしましたが、ナノは実行するたびにセグメンテーションフォルトを投げます。そのポイントは、配列をたどり、各要素を別々の行に出力させることです。
int main()
{
int array[5] = {1, 2, 3, 4, 5};
int i = 0;
for (i = 0; i < sizeof(array); i++)
{
puts(array[i]);
}
}
私は間違っていますか?
コンパイラの警告を最大にしてください。このコードについての警告が表示されます。 –
'sizeof'は、オブジェクトのサイズをバイト単位で返します。これは、配列の要素の数と同じではありません(要素のサイズが1バイトでない限り)。要素の数を取得するには、値を1つの配列要素のサイズで除算する必要があります。また、 'int'を' puts'に渡すことはできません。これは文字列、 'char *'を必要とします。 –
これは有効でもありません。これをコンパイルすると、コンパイラーが誤って構成されていることを意味します。例えば、GCCの場合、Cコンパイラ 'gcc -std = c11 -pedantic-errors'として必ず使用してください。 – Lundin