いくつかの整数で2次元配列を初期化しようとしています。配列を0に初期化すると正しい結果が得られますが、他の整数を使用するとランダムな値が得られます。 1
ないすべてのint
の要素にあなたの配列の各バイトを設定memset配列を1にする
int main()
{
int array[4][4];
memset(array,1,sizeof(int)*16);
printf("%d",array[1][2]); <---- Not set to 1
}
いくつかの整数で2次元配列を初期化しようとしています。配列を0に初期化すると正しい結果が得られますが、他の整数を使用するとランダムな値が得られます。 1
ないすべてのint
の要素にあなたの配列の各バイトを設定memset配列を1にする
int main()
{
int array[4][4];
memset(array,1,sizeof(int)*16);
printf("%d",array[1][2]); <---- Not set to 1
}
memset
。
すべての値を1に設定したイニシャライザリストまたはループ文を使用して、すべての要素に値1
をコピーします。
memset
は、バイト単位でのみ動作します。すべての整数ゼロは一般にすべてゼロビットなので、ビットをゼロにすることは一般的に機能します。したがって、4つの全ゼロビットのバイトを1つのオールゼロビットint
にグループ化すると、ゼロになります。バイトではないものについては、すべてを初期化する最も簡単な方法は、それらをすべて明示的に初期化することです。
すべての返信ありがとうございます。 – user968000
memset
あなたはメモリとして個々のバイトを埋めることができます、あなたは整数値で設定しようとしている(多分4バイト以上を。)これらは両方00000000
としてバイナリで表現されるようあなたのアプローチだけで数0
と-1
上で動作しますか11111111
。
int main() {
int i, val = 1, max = 4;
int array[max][max];
max = max * max;
for(i = 0 i < max; i++) {
array[i] = val;
}
}
は、あなたがこのためにmemset_pattern4、memset_pattern8、またはmemset_pattern16を使用することができますforループ
ザ・はあまり気にしないです。 –