• 締切済み

Perlで構造体の配列を作る方法

Perlで構造体の配列を作る方法を教えてください。 初期値の設定方法もお願いします。

みんなの回答

  • okiyoshi
  • ベストアンサー率34% (11/32)
回答No.1

tamukikunさんは05/12/09の「Perlで構造体はつくれませんか? 」の質問回答をまだ締め切られていませんが、それとどう違うのでしょう? 初期値の設定方法なら上記質問の回答に書いたとおりですが、自分でテストしても理解できない場合はその旨同じ質問に補足されたらいいと思います。

tamukikun
質問者

補足

すいません、自分でテストしてみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Perlで構造体はつくれませんか?

    Perlで構造体を作る方法はないでしょうか?

    • ベストアンサー
    • Perl
  • 動的に作成した構造体配列の中に、さらに動的に構造体配列を作るには?

    はじめまして。 この度、ちょっとした計算プログラムを作ることになったのですが、 タイトルにもありますように、 『動的に作成した構造体配列の中に、さらに動的に構造体配列を作る』 方法がわからずに困っています。 実際には下記のようにプログラムしたいのですが... ------------------------------------------------- 'a'の構造体の中に作られる'b'の配列数は、下記のように 'a'の配列の番号により違い、また'a'の配列数も最初の段階では未定です。 構造体'a'←配列数未定 構造体'b'←配列数未定 a[0]-----b[0]  |    b[1]  |    b[2]  | a[1]-----b[0]  |    b[1]  | a[2]-----b[0]  |    b[1]  .    b[2]  .    b[3]  . ------------------------------------------------- new演算子で'a'の配列は作れたのですが、その中の'b'の数の分だけ 配列を動的に作成する方法がわかりませんでした。 最初は'b'の配列を多めに取って計算すればよいと思っていましたが、 計算過程で'b'の配列数が10000を越えてしまう場合があり、 また'b'の構造体のサイズも大きめなので、断念せざるをえませんでした。 どなたか、このように配列を作成する方法を知っている方がいましたら、 是非教えていただきたいです。 下手な説明ですいません。

  • 構造体配列の一部初期化!!!

    はじめまして@ 今、下のような構造体があるとします。 ----------------------------------------------- Type TableColumn  sName As String  sKana As String End Type Type a_2  C(100) as TableColumn End Type Type a_1  B(3) as a_2 End Type global A(5) as a_1 ----------------------------------------------- ちなみに図で表すとこんな感じです。 A(5) |-B(3)  |-C(100)   |-sName   |-sKana このとき、この構造体の配列を初期化するときは普通でしたら、  Erase A とやることによってすべての配列の中身が初期化されると思うのですが、 今回は一部を消去したいのです。 たとえば、A(0).B(0)以下の中身は初期化しないで、A(0).B(1)以下は初期化する、といった感じです。 何か良い方法がありましたらぜひご教授お願いいたします。 よろしくお願いします。

  • 構造体配列の並べ替え

    いつもお世話になっております。 VB6で構造体の配列をソートしたいと考えています。 具体的やりかたは調べたいと思うのですが、ヒントとしてひとつ教えてほしいことがありまして質問させていただきました。 たとえば 名前(string) 身長(integer) 体重(single) 何人分かを仮にprofileという名の構造体に入れて、普通の配列と同じ様に体重だけをソートしたとします。 すると体重だけがソートされてしまうのでしょうか? それとも構造体ごとソートされてくれるのでしょうか? 前者だとかなり悩むことになりそうなので、そこだけ教えていただきたく質問させていただきました。 よろしくお願いします。

  • VBで構造体の配列を関数に渡す方法?

    構造体の配列のアドレスを関数に渡して使用したいのですが、どのようにしたら良いでしょうか?教えて下さい。

  • 構造体とポインタ配列

    現在C言語の勉強をしております。 環境はwindowsXP、コンパイラはVC6.0です。 構造体と、ポインタの配列についてなのですが、 以下のような構造体が宣言されている時に、リスト構造にデータがいくつか入っているとします。 // 構造体 typedef struct address { unsigned char names[NAME_SIZE+1]; /* 名前 */ char tels[TEL_SIZE + 1]; /* 電話番号 */ struct address *prev; /* 前へのポインタ */ struct address *next; /* 次へのポインタ */ }Address, *a_pt; そのリスト構造を先頭要素か順番にポインタ配列に格納するには以下の方法ではおかしいでしょうか? /* ポインタ配列を用意する */ Address *array[MAX_COUNT]; /* top_ptは先頭のポインタです */ pt = top_pt; /* データがなくなるまで配列へ格納する */ while(pt != NULL){ array[count++] = pt; pt = pt->next; } /* 配列の最後はNULLとする */ array[count] = NULL; また、配列の中身を確認する方法としては、 printf("配列の中身:%s\n", array[0]->names); では、アドレスが表示されてしまうのかな・・と思ったら、accessViolationで落ちてしまいました・・・。 中身はどうしたらデバッグ出来ますでしょうか? そもそも、以下の2つは何か違いはありますか? Address *ptA[100]; a_pt ptB[100]; 皆さん、どうかよろしくお願いいたします。 理解不能な場合はご指摘ください。

  • 構造体配列のポインタを引数に

    こんばんは。 Visual C++ 2008 Express Edition を使っています。 C++のあるプログラム内の関数で、構造体の1次元配列のポインタを引数に取ろうと思っているのですが上手くいきません。 関数の目的としては、関数側と呼び出す側のファイルを分けているので、関数側のグローバルな構造体配列のアドレスに呼び出し側の構造体配列のアドレスを代入することです。 構造体はExampleと型を定義してあります。 ・関数側 Example *global_ex[10]; void GetEx(Example *ex[])  // ←2つ目のエラー {   global_ex = ex;  // ←1つ目のエラー } ・呼び出し側(呼び出し側の関数内)   Example ex[10];   (exの初期化)   GetEx(&ex); ・エラー  error C2440: '=' : 'Example *[]' から 'Example [15]' に変換できません。配列型への変換はありませんが、参照またはポインタから配列への変換があります。  error C2664: 'GetEx' : 1 番目の引数を 'Example (*)[15]' から 'Example *[]' に変換できません。 プログラムとエラーは以上です。 何をすれば解決できるのか、ご存じの方いらっしゃいましたらよろしくおねがいします。 CとC++は独学で学んでいるので偏りがあると思います。 「基本的な○○が分かっていないのでは?」と感じたらその点もご指摘頂けると嬉しいです。。

  • C++、クラスメンバの構造体配列の初期化について

    クラスのメンバに構造体の配列を持っていて、その構造体はfloat値を4つ持ってます。 私はいつもメンバ変数の初期化はコンストラクタでしています。 クラス生成時に全てのfloatを0で初期化したいのですが、これはコンストラクタでfor文を回すしかないのでしょうか? 一文で初期化することは出来ないのでしょうか? 話は少し変わってしまいますが、今思ったのですがコンストラクタで値を決めるのは初期化じゃなくて代入と呼ぶのですかね? ご助力よろしくお願いします。

  • 構造体?二次元配列?

    VisualBasicの本を見ていると、構造体という言葉で解説されていないようですが、二次元配列の事と思って良いのでしょうか。それともまた別の事ですか。 よろしくお願い致します。

  • 多次元配列の構造体の初期化

    タイトル通りです。やり方がわかりません。 構造体変数の初期化や多次元配列の初期化が載ってるページは多いのですが、コレだけは調べても解りませんでした。 typedef struct{ int flag; ~~~~~(略)~~~ }map_t; map_t map[64][64]; の後、map_t型のmap64*64の int flag全てに値を代入したいのですが 詳しいやり方が解りません。 int hensuu[3][3]={   {1,2,3},{4,5,6},{7,8,9} }; 普通の多次元配列みたいにmこんな感じでやりたいんですけど… 初心者でスミマセン。回答いただけたらありがたいです。

このQ&Aのポイント
  • なっとく名刺マイクロミシンMT-JMN1WNで、らくプリソフトを使って文字入力する場合、表示される名刺の大きさが現物と合いません。
  • 質問内容: 表示される名刺の大きさが合わない。なっとく名刺マイクロミシンMT-JMN1WNで、らくプリソフトを使って文字入力する場合、表示される名刺の大きさが現物と合いません。どうすれば合いますか?
  • 質問内容: 表示される名刺の大きさが合わない。なっとく名刺マイクロミシンMT-JMN1WNで、らくプリソフトを使って文字入力する場合、表示される名刺の大きさが現物と合いません。どうすれば合いますか?
回答を見る