ベストアンサー ユーザー定義型変数の一括初期化 2003/08/25 13:23 ユーザー定義型の変数を初期化する場合、 各エレメントごとに初期化をすればいいのですが、 C言語のmemset()の様に、一括で初期化をする方法はありますか? みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー todo36 ベストアンサー率58% (728/1234) 2003/08/25 13:43 回答No.2 空のユーザー定義型変数を代入してやればよい。 Public sub EraseTypeHoge(byref Data as TypeHoge) Dim nul as TypeHoge Data = nul end sub 通報する ありがとう 1 広告を見て他の回答を表示する(1) その他の回答 (1) maruru01 ベストアンサー率51% (1179/2272) 2003/08/25 13:35 回答No.1 こんにちは。maruru01です。 Eraseステートメントでしょうか。 数値→0 文字列→"" などと決まった値にするだけですが。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Visual Basic 関連するQ&A C言語にて、以下のような配列を定義した場合の初期化(0埋め)方法が分か C言語にて、以下のような配列を定義した場合の初期化(0埋め)方法が分からずに困っています。 char name[50][30]; <現在やっている事> memset(&name[0][0], 0x00, sizeof( name )); 上記の方法では、sizeofの値が正しくないように思っている (正しい値は30と考えています)のですが、 正しくはどのように行うものでしょうか。 どなたか教えていただけると幸いです。 以上ですが、よろしくお願いいたします。 C,C++に変数の初期化と処理系について C,C++で変数宣言したけれども初期化しないで使った場合、何らかの値を出力してしまう場合とかエラー(core dumpなども)を出して停止する場合など処理系依存ということになると思います。また、別言語ではデフォルトでゼロ指定される場合もあります。これは自動初期化とい意味で初期化がされているものに分類されます。 処理系で初期化しないで変数を利用して適当な値を出すという風になっているとしたらその理由とかメリットというのがあるものでしょうか。core dumpで処理が停止するというのは当然であり、良心的とも言えるわけで、適当な値を出すことは危険極まりないと思うのですが。 Windowsで、分子・分母の変数を定義しないで割り算したところ、256な数値が出ました。 Linuxではcore dumpになるところだと思います。 初期化して使え、ということを徹底するべきですが、逆に初期化しないでも(すなわち変数としてどのアドレスに対応しているか不明であっても?)計算を進めてしまうメリットがどこかにあるのか?という疑問が生じます。 いかがでしょうか。そこが分かれば尚更変数を初期化して使う習慣が身に着くと思うわけですが。 変数の型を定義しなかった場合どうなりますか? 現在、VBAを使ってプログラミングを行っているところなのですが、 一般的に、プログラムの最初で変数に対してintegerやlongといった型を定義してから使うというように教わりますが、このように型を定義しなくとも使うことが出来ます。もし定義しなかった場合、その変数の型は何に設定されているのでしょうか? では型を定義するメリット及び、せずに使った場合のデメリットは何なのでしょうか? 私が使っているのはVBAですが、他の言語では型を定義しなければ、その変数を使うことが出来ないというようなものもあるのでしょうか? ユーザー環境変数の一覧 システム環境変数とログインしている環境変数それと、 存在する全てのユーザーに対する環境変数を取得するプログラムをC言語作成したいのですが、どうすればよいのでしょうか? OSはWindows2000です。 言語は問いません、VC++2005かC#かVB.NETのどれでも構いません。 大量の変数を定義するにはどうしたら良いですか? VBA或いはVBのプログラムの最初で変数の型を定義したい場合、 変数が100個以上ある場合にはどうすれば良いのでしょうか? 100行にも渡って変数の定義を書くのはあまりにも見づらいと思います。何か良い方法がありましたら教えて下さい。 同じ名前の外部変数定義 C言語で、何個かのファイルに同じ型、同じ名前のstatic型の外部変数定義があっても大丈夫ですか? static型でなかったら駄目だと思うのですが、static型ならいい気もしてきて悩んでます。宜しくお願いします。 C言語のグローバル変数の初期化について C言語において int a = 1; // 動的グローバル変数 static int b = 2; //静的グローバル変数 funcA(){ int c = 3; // 動的ローカル変数 static int d = 4; //静的グローバル変数 ・ ・ ・ } 上記のように各種変数を初期化したとします。 "c"のような動的ローカル変数であれば、funcA()が呼ばれたときに毎回初期化されますよね? では ・"d"のような静的ローカル変数は、初めてfuncA()が呼ばれたときに初期化されるのですか? ・"a","b"のyほうなグローバル変数は、どのタイミングで初期化されるのですか? 以上2点について伺いたいと思います。 ちなみに、組み込み機器むけのソフトウェアを想定しています。 c言語で定義する変数のアドレス c言語の超初心者です。追いえてください。 c言語で2つの変数を定義しています。 char *a; char *b; この2つの変数に値をいれた際の動作で以下のようなことって発生しますか? a="1111" b="2222" aをprintfするとbにいれた値"2222"が表示される。 C++の変数の初期化 C++を勉強中です。JavaやC#、JavaScriptといった言語はひととおり使えます。 C++におけるクラスHogeの変数hogeの初期化で、以下のふたつの構文では意味が違うようですが、どのように違うのでしょうか? Hoge hoge; Hoge hoge(); VC++でクラス変数の定義方法。 VC++でクラス変数の定義方法。及び、使用方法を教えてください。 しっかりと、インスタンスを生成して変数を使用してるのですが、呼んだときには、変数は初期化されてNULLになってしまいます。 どうしたらよいか教えてください。 静的変数の大量な要素を初期化したい 言語:c OS:Windows XP 処理系:Borland C++ Compiler 5.5 静的変数の大量な要素を-1で初期化したいのですが、 どのようにかけばよいでしょうか。 static int a[1000] = {-1, -1, /* ←これをたくさんかくしかないでしょうか */ エクセルVBA ユーザー定義の値を変数に格納したい Excel2003を使っています。 ユーザ定義を使ってセルへの入力をします。 例えば、 セルB1に AB1111 セルC1に AB2222 セルD1に AB3333 セルE1に AB4444 セルF1に AB5555 と入力します。 4桁の数字の前に"AB"が決まって付くので、ユーザー定義 "AB"##0000 を使って数字4桁だけ入力するようにしました。 そしてさらに、 エクセルVBAを使って、変数iに AB1111 を格納したいのですが、iには 1111 しか取得できません。 iに AB1111 を取得したいのですが、どなたか方法を教えてください。 よろしくお願いします。 PHP 変数の初期化について教えてください PHPを勉強中の者です。他のプログラム言語の使用経験は一切ありません。 PHPにおいては変数の初期化は絶対に必要ではないということで、今まで特に気にすることは無かったのですが、マニュアルにもあるように初期化することは良い習慣とのことで正しい初期化を知りたく質問させていただきます。 他のプログラムにおいては最も最初に解決すべき部分であり、恥を晒すようですが、なにとぞアドバイスをいただけたらと思います。 以下質問になります。 ---------------------------------- 1.私の解釈では変数の初期化とは、変数の型を決め初期値を入れる、と認識していますが、これは正しいのでしょうか。 2.Javaの参考書で変数の部分を読んでみたところ、型を決めただけでは初期化とはいわず、型決めと初期値を入れた工程(工程ってのもおおげさかもしれませんが)が初期化と記載がありました。 PHPにおいては型の宣言は不要とのことで下記のように記載すれば型及び初期値が決まると解釈していますが、この解釈は正しいのでしょうか? $a = 1; //これは整数 $d = 1.1 //これは浮動小数点 $b = "aa"; //これは文字列 $c = true; //これは論理値 $a = array(); //これは配列 3.他の参考になりそうなサイトで配列を代入する変数を初期化する場合として下記のような記載がありました。 unset($a); $a = array("aa", "bb"); unsetは変数を解放するためのものであり、私だったらこの場合の初期化として $a = array(); を書く方が適しているように思いますが、配列を代入する変数を初期化する場合、上記サンプルと私の考えとどちらが正しいのでしょうか? 4.変数を初期化するタイミングについて 質問のために、サンプルコードを書きました。まず下記サンプルを見てください。 ※このサンプルコードはformエリアからの入力値によって計算を行なうものと想定して下さい。値を受けた後の処理工程を記載しています。また、受ける値の正当性チェックについて省いています。 (1)(2)については質問箇所です。 (1) if(isset($_GET['send'], $_GET['int1'], $_GET['int2'])){ (2) $a = $_GET['int1']; $b = $_GET['int2'] }else{ exit; } $c = $a + $b; echo $c; サンプルコードは以上となります。仮にこういうコードがあったとして、初期化するタイミングがわかりません。コード中に(1)(2)と番号を振りましたが、個人的にこの2箇所のどちらかで初期化すればよいだろうと思い込んでいますが、こういうコードの場合、どの部分で初期化した方がいいのでしょうか? ---------------------------------- 質問は以上となります。 何卒宜しくおねがいします。 変数の定義をしないメリットは? http://hiroba.chintai.net/qa7614160.html でも質問したのですが、なぜあえて変数の定義をしない場合があるのでしょうか? 私は必ず「変数の宣言を強制する」にチェックを入れて使っているのですが、 ネットで見るサンプルコードで、たまに変数の定義をしてない場合があります。 http://slashdot.jp/journal/516080/ExcelVBA%E5%85%A5%E9%96%80%EF%BC%9A-URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%EF%BC%8F%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%A1%8C%E3%81%86%E3%80%82など 何のために変数を定義しないのでしょうか? メリットを教えてください。 未初期化変数の扱い方についての質問 Microsoft Visual C++ 2008を使用しています。 #include <stdio.h> int main() { float a; … for(;;) { … scanf("%f",&a); … printf("%f",a); } } このようなプログラムを書いて、実行しました。 aという変数に数字を入力すれば問題ないのですが、誤って文字を入力してしまうと、-107374176という値が連続で出力されます。(for文のループが無限に繰り返される。) for文ではあるキーワードを入力するとループから出るというプログラムになっています。 間違って文字を入力する時にどの文字を入れても必ず、-107374176の値になるので調べたら、「-107374176は0xccccccccでvcのデバッグビルド時の未初期化変数の値と一致する。」という内容をネットで見つけました。 変数として定義されていて、初期化されていない変数を未初期化変数ということなので、aが未初期化変数になるのはわかるのですが、なぜループが無限につづくのかが理解できません。 質問の回答をよろしくお願いします。 (mathematica)Tableで配列された変数の一括定義 例えば、手打ちで {a[1],a[2],a[3]}={1,2,3} ------(1) とした場合はa[1],a[2],a[3]それぞれに1,2,3が割り当てられますが、これをTableコマンドを使って Table[a[i],{i,3}]={1,2,3} としてもa[1],a[2],a[3]には何も割り当てられません。Tableコマンドを使って、(1)と同じように配列内の変数を一括に定義できる操作がわからなくて困っています。mathematicaに詳しい方ご存知でしたらぜひ教えてください! ちなみに私はmathematicaのver6を使っています。 VBAの中でユーザー定義関数を使うときに VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。 関数の戻り値による変数の初期化 関数の戻り値で変数を初期化すると、予期せぬ動作をする可能性があると聞いたのですが、実際にそのようなことがあるのでしょうか? また、予期せぬ動作をする場合、そのような現象が起きる環境と原因は何なのでしょうか? 使用している言語はC++なので、例えば下のような動作です。 int a = f(); ・対象の関数が標準関数かどうかは不明です。 ・変数はローカルを想定しています。 ちなみに私は、C,C++を2,3年勉強しており、会社での実践経歴が1年程度です。 変数型について 1kバイト程度の変数型が必要なのですが、c言語でそのような変数型を作ることは可能でしょうか? 可能ならその方法を、不可能ならその他の言語では可能であるかを教えてください。 お願いします。 ワードの印刷「ユーザー定義用紙」の初期設定変更 ワードで印刷するため、ページ設定を開けると用紙設定が「ユーザー定義用紙」となっています。その都度A4に変更して印刷していますが初期設定を「ユーザー定義用紙」から「A4」用紙設定に変更する方法を教えてください。62歳の初心者ですので具体的に教えてください。