検索結果
配列初期化
- 全てのカテゴリ
- 全ての質問
- 関数の引数に配列を初期化なしで。
関数の引数に配列を初期化して渡しているプログラムを目にします。 関数の引数に配列を初期化なしで渡す場合とどう違うのでしょうか? 例 <?php echo tesutoFunc(array('reservation' => 'a','user' => 'b')); function tesutoFunc($arrays=array()){ //ここをなぜtesutoFunc($arrays)と書かないのか? print_r($arrays); } ?>
- ベストアンサー
- PHP
- baaaaaaaaan
- 回答数1
- char型の配列の初期化について
char型の配列の初期化の仕方について教えて下さい。 一般的に変数は宣言と同時に初期化するのが良いと言われているので、 char cName[64] = {'\0'}; のように記述すべきだと思うのですが、 char cName[64]; memset( cName, 0x00, sizeof( cName ) ); のような記述を多く目にします。 最初の記述のほうが無駄な処理がないように思えるのですが、 memsetを使うメリットは何かあるのでしょうか?
- ベストアンサー
- C・C++・C#
- tadasuke2002
- 回答数2
- 配列の初期化を実施するのはどんな時?
配列の初期化を実施するのはどんな時でしょうか? 例えば、下記では初期化を実施する必要があるでしょうか? $hoge = array("foo", "bar"); また、配列の初期化を行う方法は、下記以外にもあるのでしょうか? $hoge = array();
- 配列の初期化について(foreachを使う際)
配列を、foreachの中で処理して、再び配列に入れたいです。 foreach ($a as $b) { $tmp[]=処理($b); } ってやると、配列で取得できるのですが、 $tmp=array(); foreach ($a as $b) { $tmp=処理($b); } ってやると、配列にならずに、 1つしかとれません。 どちらも、配列を初期化しているつもりなのですが、 $tmp=array();と、$tmp[]では、何が違うのでしょうか?
- static constメンバ変数(配列)の初期化について
C++初心者です。 constメンバ変数の初期化について教えてください。 クラスの中に、static constメンバ変数(配列)を持ちたいのですが、 <コード1> class hoge { public : hoge(){}; virtual ~hoge(){}; static const int fuga[2] = {1, 2}; }; とすると、VC++ 2005では、 error C2059: 構文エラー : '{' error C2334: '{' の前に予期しないトークンがありました。関数の本体は無視されます というエラーが発生します。 何がいけないのでしょうか? また、下の様にするとOKでした。 <コード2> class hoge { public : hoge(){}; virtual ~hoge(){}; static const int fuga[2]; }; const int hoge::fuga[2] = {1,2}; こうすればコンパイルが通る事は分かったのですが、なぜこんな面倒な事をしないといけないのかが分かりません。 コード1では何がいけないのでしょうか? 以上、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- fugafugahogehoge
- 回答数3
- C++、クラスメンバの構造体配列の初期化について
クラスのメンバに構造体の配列を持っていて、その構造体はfloat値を4つ持ってます。 私はいつもメンバ変数の初期化はコンストラクタでしています。 クラス生成時に全てのfloatを0で初期化したいのですが、これはコンストラクタでfor文を回すしかないのでしょうか? 一文で初期化することは出来ないのでしょうか? 話は少し変わってしまいますが、今思ったのですがコンストラクタで値を決めるのは初期化じゃなくて代入と呼ぶのですかね? ご助力よろしくお願いします。
- ベストアンサー
- C・C++・C#
- majuppitto
- 回答数4
- 配列を初期化する時ってどうすればいいですか?
Dim test() As String や Dim test As Variant で、宣言した配列を初期化する時ってどうすればいいですか? test="" test=Null test= Empty test= = Nothing は、エラーになります。
- ベストアンサー
- Excel(エクセル)
- CEMQYCSDELUFK
- 回答数3
- C言語の基礎的な質問---文字配列の初期化
C言語の配列の初期化に関する質問です。 もし規格によって回答が異なる場合は、ANSIのCということにしてください。 関数の中に、 char str[ ]="ABC"; (イ) という宣言があるとします。(staticは付きません。) これは、 char str[ ]={'A', 'B', 'C', '\0'}; (ロ) と全く同じ意味でしょうか。 似て非なるものに char *str="ABC"; (ハ) というものがあります。この場合は、 strとは違うところに"ABC"('C'の次には'\0'があります。)という領域が確保されていて、 その先頭アドレスでstrが初期化されるのですよね。 (イ)(ロ)(ハ)のいずれの場合も関数の中に書かれているとすれば、 いずれもstrは自動変数で、関数実行時にstrの領域が確保されますよね。 (イ)は配列strの領域が確保されるときに、 配列strとは別のところにある"ABC"という領域の内容を、コピーして設定する、 ということでしょうか。 (ロ)は、配列の領域確保時にstr[0]を'A'で、str[1]を'B'で、str[2]を'C'で、str[3]を'\0'で、初期化する、 ということで、 配列とは別のところには"ABC"という領域はない、 という考えでよろしいでしょうか。 もしそうだとしたら、配列とは別のところに"ABC"という領域があるかどうかという点で(イ)と(ロ)は異なることになりますが、そう考えてよろしいのでしょうか。 それとも、そういうことは処理系に依存することなんでしょうか。
- ベストアンサー
- C・C++・C#
- noname#1357
- 回答数4
- 構造体内の配列に別の配列の値を代入して初期化したい
以下の構造体があります typedef struct { unsigned id; unsigned char data[8]; } Packet; これを初期化したい場合、たとえば以下の構文を使います static const Packet packet = {0x152, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"}; これならば問題ないのですが、実際には以下の内容を実現したいと思っています int data[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; static const Packet packet = {0x152, data}; 上記内容では当然エラーが起きますが、やりたいことのニュアンスは伝わると思います これを実現する方法を教えてください なお、このプログラムはマイコン上で走らせるため、可能な限りノンストレスで動くことが望ましいです
- ベストアンサー
- C・C++・C#
- zero-spica
- 回答数2
- C++の配列オブジェクトを宣言と同時に初期化する方法
たとえば class ningen{ private: int nenrei; char name[20]; public: ningen(int nenrei , char *name){ this->nenrei=nenrei; strcpy(this->name,name); } }; というクラスがあったとして int main(void) { ningen ni[2]={ ningen(20,"sato"),ningen(30,"goto") }; return 0; } のように宣言と同時に初期化する方法は上記のように 一つ一つningen(int,char*)で指定しないとできないのでしょうか? もっと清潔に記述する方法はないのでしょうか? よろしくお願いします。
- 締切済み
- C・C++・C#
- sleep-soul
- 回答数3
- 関数へのポインタ渡しでの配列の初期化について
はじめまして、C言語の基本的な質問をさせてください。 C言語で、外部関数へポインタで引数を渡す場合に、 関数に渡されるのはアドレスですよね? で、渡された関数側でそのポインタの配列の初期化を するときにはアドレスだけの情報だと、要素数がいくつ あるか分からず、領域の破壊をしてしまいそうな気が するのですが?いかがでしょうか? また、関数かなんかで、配列の要素数が分かる関数が あったような気がするのですが、それもアドレスだけ でわかるのでしょうか?
- ベストアンサー
- C・C++・C#
- H-hirosawa
- 回答数1
- SGN関数を使った2つの動的配列の初期化判定
Excelのvbaにおいて2つの動的配列を同時に初期化(redimされているか)どうか判定するときに sgn関数を使うとおかしな現象が起こります。 a,bの動的配列を2つ宣言して、redimを行う前あるいはeraseで開放した後に sgn(a)=0とsgn(b)=0の結果を評価すると共にTrueが返ってきますが (Sgn(a) = 0) And (Sgn(b) = 0) を評価すると なぜかFALSEが返ってきます。 (True And True = FALSEとかいう矛盾した結果が返ってくる) sgn(a)=0、sgn(b)=0の結果をそれぞれAbool,Bboolというbool型変数に格納してから Abool And Bboolとすれば、正しい評価は可能なのですが、 (Sgn(a) = 0) And (Sgn(b) = 0) がFALSEになる理由がわかりません。 この現象が起こる理由を押して下さい。 この現象が発生しているパソコンは2台あります。 OSはWindows 7の32bitと64bit Excel 2013 32bit (2台とも) 以下はサンプルコードです。 Public Sub test() Dim a() As Integer Dim b() As Integer If Sgn(a) = 0 Then MsgBox "配列aは初期化されていません。" If Sgn(b) = 0 Then MsgBox "配列bは初期化されていません。" If (Sgn(a) = 0) And (Sgn(b) = 0) Then MsgBox "配列a,bは両方共初期化されていません。" Else MsgBox "配列a,bはいずれかが初期化されています。" End If End Sub
- ベストアンサー
- Visual Basic
- iori16
- 回答数4
- 配列の初期化時に出たエラーの原因について
プログラムの学習を行っていた時に出たエラーの原因について教えて頂きたいです。 状況は下記の通りです。 int main ( void ) { int A[8] = { 0xff, 0xf7, 0xeb, 0xdd, 0xdd, 0xc1, 0xdd, 0xdd }; ... と書いた時にはコンパイルエラー undefined reference to '_memcpy' と出たのですが、 下記のように修正すると出なくなりました。 int A[8] = { 0xff, 0xf7, 0xeb, 0xdd, 0xdd, 0xc1, 0xdd, 0xdd }; int main ( void ) { ... 何故main文から出しただけでこのエラーが直ったのか知りたいです。 詳しい方よろしくお願い致します。
- VB2008: 構造体の配列の初期化の方向性にアドバイスを!
構造体の演習の締めに付属リストを数えるプログラムを考えました。 D:\Temp\SecondaryMaterialList.csv 品番001, 付属1_A, 付属2_A, 付属3_A 品番002, 付属1_A, 付属2_B, 付属3_A 品番003, 付属1_B, 付属2_A, 付属3_A 品番004, 付属1_B, 付属2_A, 付属3_B 品番005, 付属1_A, 付属2_B, 付属3_B struct SecondaryMaterial { char *aname; int count; } SMTab[] = { "付属1_A", 0, "付属1_B", 0, "付属2_A", 0, "付属2_B", 0, "付属3_A", 0, "付属3_B", 0 }; これ位は、VB.Net なら軽いもんだろうと思って色々と構造体の配列の初期化にアタック。 しかし、ことごとく失敗。 多分、VB.Net なら軽いもんだが私にはそうではないということ。 色々と調べましたが、配列ではない構造体の初期化は見つかりました。 が、配列の初期化のアイデアというか確たる手法は見つかりませんでした。 「それは、こういう方向性でアプローチしたらよい!」 そのようなアドバイスが頂けたらありがたいと思って質問します。 宜しくお願いします。
- ベストアンサー
- Visual Basic
- noname#140971
- 回答数3
- 宣言した変数、配列をプログラム実行中なるべくたやすく初期化したい。
VB.Net2003を使用しています。 最初プログラムを実行中、宣言した変数、配列をプログラムをなるべくたやすくまとめて初期化する方法はありませんか。
- ベストアンサー
- Visual Basic
- KamiHotoke
- 回答数1
- 入れ子になっている構造体配列の初期化がうまくいきません。
入れ子になっている構造体配列の初期化がうまくいきません。 どのようにすればうまくいくでしょうか? #include <stdio.h> typedef struct _item { int no; char name[10]; int price; }ITEM; typedef struct _all_item_info { ITEM ruit[2]; ITEM vegetable[2]; }ALL_ITEM_INFO; ALL_ITEM_INFO all_item_info = { {1, "apple", 100}, {2, "melon", 80}, {3, "tomato", 100}, {4, "radish", 200} }; int main() { ・・・・ } コンパイルすると、以下のようにエラーになってしまいます。 エラー E2225 kouzoutai7.c 20: 初期化子が多すぎる エラー E2141 kouzoutai7.c 22: 宣言の構文エラー エラー E2190 kouzoutai7.c 22: 不要な } エラー E2190 kouzoutai7.c 22: 不要な } OSはwindows、 コンパイラはBorland C++ Compilerです。
- C言語 初期化について
はじめまして。 C言語を学習しております。 【初期化】の意味について混乱しております。 今まで、【初期化】とは下記のような繰り返しのある文に初期値(数え始めの値、下記の例では1)を代入することだと思っていました。 for (i = 1;i <= 10;i++) { printf("メッセージ\n"); } しかし、勉強が進むにつれ、下記のように様々な場面で【初期化】という言葉が出てきたことで、【初期化】の意味がわからなくなりました。 ●【文字変数の配列の初期化】の例 char str[6] = {'M','A','R','I','O'}; ●文字列リテラルを用いた【文字列の初期化】の例。 #include <stdio.h> int main(void) { char str[] = "MARIO"; printf("%s\n",str); return 0; } ●【配列の初期化】の説明 型名 配列名[要素数]={0番の数値,1番の数値,2番の数値,・・・}; ●【配列を初期化】して表示する例 #include <stdio.h> #include <stdio.h> int main(void) { int array[10] = {42,79,13}; printf("array[0] = %d\n",array[0]); printf("array[1] = %d\n",array[1]); printf("array[2] = %d\n",array[2]); printf("array[3] = %d\n",array[3]); printf("array[4] = %d\n",array[4]); return 0; } ●for文の説明 for (初期化;条件式;更新) { 繰り返す文; } 初期化とは、カウント変数の初期化を行うための文です。 ここに書かれた式は、最初に1回だけ実行されます。 【初期化】とは、場面場面で意味が変わるのでしょうか。 どの場面に通じる【初期化】の本来の意味を教えてください。 よろしくお願い致します。
- C言語初心者です
私は今C言語のフローチャートを勉強しているのですが なかなかうまくいきません。他のサイトや本などではサンプルが載ってたりするのですが実際に書いてみると雑な感じになってしまいます カレンダー表示でフローチャートを作成するとして 年 月 日の宣言と初期化 ↓ 月の末日配列の宣言と初期化 曜日の配列宣言と初期化 ↓ 閏年の判定 ↓ 前月までの日数 ↓ 前月と前年度 今月の日数の合計 ↓ 曜日計算 (総日数から7で割った余り) ↓ 出力 ↓ 終了 といった感じになりました。全体的に明確にしたいのですが どんな感じにすればいいのかわかりません 例えば 月の末日の配列宣言と初期化、曜日の配列宣言と初期化 この部分を明確にするにはどう表現したらいいのでしょうか? アドバイスの方よろしくおねがいします。
- ベストアンサー
- C・C++・C#
- noname#53915
- 回答数1
- Cのプログラミングについての質問です
全零で任意のサイズの二次元配列を用意して、その中の要素の一つをランダムに選んで1に初期化する。 その選んだ要素の上下左右どれか一つをランダムに選んで1に初期化する。 再び1に初期化した要素を選んだら今度は0に初期化する。 以上の処理を任意の回数繰り返して、1同士が必ず上下左右で隣接してる配列を生成したいのですが、 どのように書いたら実現できるでしょうか。
- 締切済み
- C・C++・C#
- wanimaru7101
- 回答数2
- 宣言時に初期化した場合としない場合の違いは?
C言語を初めて2週間の初心者です。 現在配列の勉強をしていてちょっと疑問に思いました。 配列に点数を読み込んで合計点と平均点を表示するプログラムを書いたのですが、 #include<stdio.h> int main() { int i; int sum = 0; int vc[5] = {0}; //vc[5]と配列の両方に0を格納している。(初期化してる。) puts("点数を入力してください。"); for(i = 0 ; i < 5 ; i++){ printf("%d番:",i+1); scanf("%d",&vc[i]); sum+=vc[i]; } printf("合計点:%d\n平均点:%.1f\n",sum,(double)sum/5); return 0; } 宣言時に、配列vcと合計sumの両方を0で初期化してます。 この時sumを初期化しないと、コンパイルエラーは起きないのですが、正しい値が出力されません。 桁数がすごいことになります。 しかしvcは初期化しなくても大丈夫でした。 sumを初期化しなければいけないのはなぜですか。 加えて、なぜvcは初期化しなくても大丈夫だったのでしょうか。 初心者にもわかるように教えていただけると幸いです。
- ベストアンサー
- Windows 8
- gardenofwsd
- 回答数3
