- 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をポップアップさせたらインデントが入っていてビックリ
|
|