トップページ > プログラム > 2014年03月22日 > F2tjwglx

書き込み順位&時間帯一覧

13 位/198 ID中時間01234567891011121314151617181920212223Total
書き込み数0021000000000000000000104



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
HSP総合スレ【part 7】

書き込みレス一覧

HSP総合スレ【part 7】
226 :デフォルトの名無しさん[sage]:2014/03/22(土) 02:01:06.01 ID:F2tjwglx
>>224
その条件ならmemcpyで丸ごとコピーするのが簡単
整数1つは4バイトなので、配列全体のサイズは5 * 5 * 4バイト
つまりコードにするなら「memcpy(b, a, 5 * 5 * 4)」となる

……ところで、「a(0,0) = 0,1,2,3,4」だと、a(0,0)〜a(4,0)までしか明示的に
初期化できていないけど、その辺は大丈夫?
(※HSPの場合、整数配列の値はデフォルトで0に初期化されている)
HSP総合スレ【part 7】
228 :デフォルトの名無しさん[sage]:2014/03/22(土) 02:45:48.83 ID:F2tjwglx
>>227
HSPの配列初期化の方法はややこしいからね……
要するに配列を一気に初期化する際は
  a(0,0)=0,1,...
  a(0,1)=1,2,...
  a(0,2)=2,3,...
といった風に書く必要がある。詳しくはmesとかで表示させて確認してね
memcpyは明らかにC言語から来ている命令だからややこしいのは仕方ないよ
(単純に「メモリをコピーしているだけ」なのだが)
HSP総合スレ【part 7】
230 :デフォルトの名無しさん[sage]:2014/03/22(土) 03:34:04.62 ID:F2tjwglx
>>229
まず聞くけどaは2次元配列にする必要あるの?
それは横に置いておくとしても、なんで無限ループさせているのか……
とりあえず書き直してみたけどどうよ?
(実行する前に全角空白を半角空白に置換してね)

;moduleは普通メインのコードの手前に書くものかと
#module test
  ;配列をコピーする命令
  #deffunc copy_array array a
    ;配列bを宣言
    dim b, 5, 1
    ;配列a(このaは引数名)の内容を配列bにコピー
    memcpy b, a, 5 * 1 * 4
  return
#global

;配列aを宣言
dim a, 5, 1
;aを明示的に初期化
a(0, 0) = 0, 1, 2, 3, 4
;モジュール内の配列bを生成して、配列aの内容をコピー
copy_array a
;配列aと配列bの内容を表示
repeat 5
  mes "a(" + cnt + ") = " + a(cnt, 0) + " / b(" + cnt + ") = " + b@test(cnt, 0)
loop
stop
HSP総合スレ【part 7】
234 :デフォルトの名無しさん[sage]:2014/03/22(土) 22:13:53.89 ID:F2tjwglx
>>233
まあ習いたての頃はよく使っていたが、今は基本的に長い名前にしているよ
ただしHSPじゃ変数名の大文字と小文字は区別されないから、
キャメルケースよりスネークケースで書いた方が分かりやすいかもしれない
(俺は前者のほうが好きだが)

  キャメルケースの例:CopyArray ;HSPだと「copyarray」と認識される
  スネークケースの例:copy_array ;HSPでも「copy_array」のまま

どうでもいいけど>>229をポップアップさせたらインデントが入っていてビックリ


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。