2016-05-31 4 views
0

配列のすべての値を1に設定する必要があります。私は、次のコードを使用してこれを実行しようとしている:memset()はvalesを1に設定しません

int bulbSwitch(int n) { 
    int bulbs[n]; 
    memset(bulbs, 1, n * sizeof(int)); 
    ... 

しかし、デバッガは、アレイ内のすべての値が実際にmemsetなければ16843009.に設定されていることを示し、配列値は一見ランダム、正の整数です。これはなぜですか、私はそれをどのように修正しますか?

答えて

3

memsetメモリのそれぞれバイトを指定した値に設定します。お使いのプラットフォームのintは明らかに4バイトです。ですから、ある1

するintの各バイトを設定している、各intのために、コードが効果的に行われます。小数点以下の値

bulbs[i] = 0x01010101; 

は正確に16843009です。

つまり、memsetを使用するのではなく、単純にループの各要素を設定する必要があります。

関連する問題