C++の自動配列変数を簡単に初期化できる方法があるのでしょうか。
どの言語か忘れたが
例えば int x[100] = {0}; のような書き方で、xの諸要素が全部0になります。
C++ではこんな書き方で全要素が0になるはずはですよね。
forを使うしかないか?
自動変数の初期化方法
Re: 自動変数の初期化方法
それC++ですね。(純粋なCはわからないけど、おそらくCから引き継いだ機能です。)佐藤 さんが書きました: どの言語か忘れたが
例えば int x[100] = {0}; のような書き方で、xの諸要素が全部0になります。
まあ他にもできる言語があるかもですが。
カンマ区切りで指定した部分までは指定した数を代入するけど、指定されなかったやつらは軒並み0にさせられます。
多分0以外で同じ値をまとめていれたい場合は、for文(もしくはfor each)で代入するかmemsetでメモリの先頭アドレスとサイズを渡して一括で上書きするくらいしかなかったはずです。
結構説明が下手ですのでご了承ください。割と言葉が足りなかったり文字だらけで分かりにくかったりします。
Re: 自動変数の初期化方法
横からすみません
{0}で初期化の有効性をどう確認すれば良いのでしょうか。
現に{0}で初期化した整数自動配列と初期化しない整数自動配列の要素をprintf()で表示して見たら、
皆0です。
なので、0になるのは偶然かどうかですね。
{0}で初期化の有効性をどう確認すれば良いのでしょうか。
現に{0}で初期化した整数自動配列と初期化しない整数自動配列の要素をprintf()で表示して見たら、
皆0です。
なので、0になるのは偶然かどうかですね。
Re: 自動変数の初期化方法
本当ですか?123 さんが書きました:現に{0}で初期化した整数自動配列と初期化しない整数自動配列の要素をprintf()で表示して見たら、
皆0です。
確認したプログラムとコンパイラのバージョンを示してください。
なお、私のところでは次のようになりました。
#include <iostream>
int main()
{
int a[10];
for (int i = 0; i < 10; i++)
std::cout << a[i] << std::endl;
}
Re: 自動変数の初期化方法
たしかグローバル変数とローカル変数で初期値が違います。
グローバル変数で試してたりしません?
グローバル変数で試してたりしません?
結構説明が下手ですのでご了承ください。割と言葉が足りなかったり文字だらけで分かりにくかったりします。
Re: 自動変数の初期化方法
お返答ありがとうございます。
私の実験コードと 梅衣堂ひよさんのと同じですよ。
梅衣堂ひよさんの実験では全要素0にならなくて、良かったのです。
これで、下記のようにして、
int a[10] ={0};
もし今度が全要素0になれば、{0}での初期化の有効性が確かめられますね。
私のVisual studio のdebug環境では{0}を入れなくても、全員0だったんです。
私の実験コードと 梅衣堂ひよさんのと同じですよ。
梅衣堂ひよさんの実験では全要素0にならなくて、良かったのです。
これで、下記のようにして、
int a[10] ={0};
もし今度が全要素0になれば、{0}での初期化の有効性が確かめられますね。
私のVisual studio のdebug環境では{0}を入れなくても、全員0だったんです。
Re: 自動変数の初期化方法
梅衣堂ひよ 様
有難うございました。
自分が実験をやってみたら、
{0}だと、自動配列要素全員が0で初期化されるのは確認できました。
他の数値だた一番目の要素だけその数値になっています。
123様へ
実験環境が違うのではないでしょうか。
有難うございました。
自分が実験をやってみたら、
{0}だと、自動配列要素全員が0で初期化されるのは確認できました。
他の数値だた一番目の要素だけその数値になっています。
123様へ
実験環境が違うのではないでしょうか。
Re: 自動変数の初期化方法
梅衣堂ひよ 様
有難うございました。
自分が実験をやってみたら、
{0}だと、自動配列要素全員が0で初期化されるのは確認できました。
他の数値だた一番目の要素だけその数値になっています。
123様へ
実験環境が違うのではないでしょうか。
有難うございました。
自分が実験をやってみたら、
{0}だと、自動配列要素全員が0で初期化されるのは確認できました。
他の数値だた一番目の要素だけその数値になっています。
123様へ
実験環境が違うのではないでしょうか。