- 1 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 15:29:45 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sageは禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.36【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1175436073/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 718 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:06:36 ]
- 「止まります」?そもそもコンパイル通らんだろ。
- 719 名前:デフォルトの名無しさん [2007/05/31(木) 09:25:24 ]
- コンパイルは通るんですよ↓メモリ確保は、次の関数で確保してます。
void securement2( int **hairetsu2 , int row , int line ){ int i, j; /*** 2次配列の行を確保する ***/ if (( hairetsu2 = (int **)malloc( sizeof( int* ) * row )) == NULL ){ printf("2次配列のメモリ領域が確保できません。\n"); exit (1); } /*** 各行に得点の列を確保する ***/ for ( j=0; j<(row); j++){ if (( hairetsu2[j] = (int*)malloc( sizeof(int) * (1+line) )) == NULL ){ printf("2次配列のメモリ領域が確保できません。\n"); exit (1); } } /*** 2次配列を0で初期化 ***/ for (j=0; j<row; j++){ for (i=0; i<(1+line); i++){ hairetsu2[j][i] = 0; } } printf("2次配列のメモリ領域が確保できました。\n"); }
- 720 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:30:00 ]
- >>718
根拠は? >>717 同意。 >>716 その構造だと、メモリはとint配列[line + 1]をrow回とポインタ配列[row]だけ確保する必要があるわけだが。 その部分のコードを晒して味噌。
- 721 名前:デフォルトの名無しさん [2007/05/31(木) 09:30:21 ]
- hairetsu2[0][0]だけが格納されて止まるみたいです。hairetsu2[1][1]も格納できないみたいです。
- 722 名前:720 mailto:sage [2007/05/31(木) 09:32:01 ]
- >>719
あーすまん、やってたのね。 で、止まるってのは具体的にどうなると?
- 723 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:32:23 ]
- >>719
確かにメモリ確保はできてるようだけど、 hairetsu2 をそのまま使うことは出来ない。 変数 hairetsu2 は関数 securement2 を終えた時点で使用不能
- 724 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:33:06 ]
- void securement2( int **hairetsu2 , int row , int line ){
↓ void securement2( int ***hairetsu2 , int row , int line ){ または void securement2( int **hairetsu2 , int row , int line ){ ↓ int **securement2( int row , int line ){ int **hairetsu2; printf("2次配列のメモリ領域が確保できました。\n"); ↓ printf("2次配列のメモリ領域が確保できました。\n"); return hairetsu2;
- 725 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:44:15 ]
- 2次元配列も連続した領域である必要があるんだよ。
その配列のアクセスの仕方をやめるか、メモリ確保を一回でやるかどっちかにせい
- 726 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 09:45:30 ]
- >>725
ちょ…おまw
- 727 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 10:29:04 ]
- 素朴な疑問だが、>>719みたいな奴って「2次元配列」言うの?
確かに同じ形で操作出来た気はするが。 >>725 何に対するレスか非常に疑問。
- 728 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 10:36:01 ]
- 可変長二次元ぬるぽ( ´∀`)
- 729 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:31:48 ]
- >>727
配列のポインタの配列。
- 730 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:47:39 ]
- ttp://www.kouno.jp/home/c_faq/c6.html
- 731 名前:デフォルトの名無しさん [2007/05/31(木) 12:37:24 ]
- windows98で
SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); は実行できますか? 実行するとどうなりますか?
- 732 名前:649 [2007/05/31(木) 13:10:14 ]
- 716です。ありがとうございます。ちょっと試してみます。
- 733 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:37:36 ]
- >>731
MSDN読め
- 734 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:43:09 ]
- >>716はダブルポインタ理解してるか?
引数にint **hairetsu2って書いてあるが、ここでダブルポインタにする必要はなにもない。 引数をダブルポインタにするには、関数内でメモリを確保して返すような場合だけだ。 ダブルポインタ=二次元配列じゃないぞ。配列は何次元になってもメモリ内の表現は連続だ。 あとrowとlineは普通どっちも行を意味する。 rowを行とするなら、列の変数名はcolumnの方がいい。
- 735 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 17:38:07 ]
- >>707
Windows APIのInterlockedIncrementのような関数が使えれば、それを使うのが楽
- 736 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 17:52:17 ]
- ダブルポインタってなに?
- 737 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 17:58:01 ]
- 1点決めると2点分になる人
- 738 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 17:58:22 ]
- 配列の連続性だけど、
a[3][3] で a[0][2] と a[1][0] の連続性って規格で保証されてたっけ?
- 739 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 18:00:11 ]
- int**がダブルポインタならこれは何ポインタ?
int*************** nullpo;
- 740 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 18:07:56 ]
- pentadecuple
- 741 名前:デフォルトの名無しさん [2007/05/31(木) 18:47:40 ]
- >>733
読みました。2000以降と書いてありますが、98でどうなるかは書いていません。
|

|