[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 20:16 / Filesize : 201 KB / Number-of Response : 915
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで 15



1 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 10:31:46 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
pc11.2ch.net/test/read.cgi/tech/1221633708/
スレを勃てるまでもないC/C++の質問はここで 5
pc11.2ch.net/test/read.cgi/tech/1230516307/
スレを勃てるまでもないC/C++の質問はここで 6
pc11.2ch.net/test/read.cgi/tech/1231564903/
スレを勃てるまでもないC/C++の質問はここで 7
pc11.2ch.net/test/read.cgi/tech/1232983248/
スレを勃てるまでもないC/C++の質問はここで 8
pc12.2ch.net/test/read.cgi/tech/1235921779/
スレを勃てるまでもないC/C++の質問はここで 9
pc12.2ch.net/test/read.cgi/tech/1240022781/
スレを勃てるまでもないC/C++の質問はここで 10
pc12.2ch.net/test/read.cgi/tech/1242300936/
スレを勃てるまでもないC/C++の質問はここで 11
pc12.2ch.net/test/read.cgi/tech/1245059383/
スレを勃てるまでもないC/C++の質問はここで 12
pc12.2ch.net/test/read.cgi/tech/1248010352/
スレを勃てるまでもないC/C++の質問はここで 13
pc12.2ch.net/test/read.cgi/tech/1260842197/
スレを勃てるまでもないC/C++の質問はここで 14
pc12.2ch.net/test/read.cgi/tech/1269273471/

52 名前:デフォルトの名無しさん [2010/05/11(火) 00:20:08 ]
(hoge++)<11||hoge=10;

53 名前:デフォルトの名無しさん [2010/05/11(火) 07:39:09 ]
>>52
ありがとうございました

54 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 08:32:03 ]
>>53
そんな保守もへったくれもないようなコード、冗談だよな?
つーか、間違ってるじゃん。

55 名前:デフォルトの名無しさん [2010/05/11(火) 09:16:40 ]
自演だろ

56 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 12:02:50 ]
++hoge > 10 || hoge = 10;
で十分。
これがわかりにいくとかいう初心者の意見は聞かない。

57 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 12:46:04 ]
こんなコードを書く奴と仕事したくない。

58 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 13:00:59 ]
俺も初心者とは仕事したくない

59 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 13:17:36 ]
perlだとそんな感じのコード書くなあ

60 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 13:20:47 ]
unix系のシェルスクリプトなら、これが書けないと話にならない



61 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 14:45:00 ]
|| を「命令文の後の or」の意味で「さもなければ」と読めばわかり易いよ

62 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:30:17 ]
普通は制御構文とはみないで論理演算子とみるわな。
短絡評価が規格に明記されてる言語は多いけど、
論理演算子とみてるからこそ「短絡評価」という表現が使われる。

63 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 16:06:00 ]
>>62
>普通は制御構文とはみないで論理演算子とみるわな。

普通なら論理演算子の評価で制御機能が働くことは重々承知してるはず
初心者は知らんが

64 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 18:12:27 ]
hogeクラスでメンバ関数で引数にクラスを使う場合,
hoge operator+(hoge&);
のように宣言しているのはhogeクラスそのものを引数にしているということであってますか?

65 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 18:30:40 ]
>>64
hogeクラスへの参照を引数としている

これが君の言っていることと同じかはこっちにはわからん

66 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 18:55:26 ]
>>65

hoge hoge::operator+(hoge &h){

67 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 18:56:52 ]
>>65
途中送信してしまいました
hoge hoge::operator+(hoge &h){
なんとかかんとか
}
こうゆうhへの参照という意味なのでしょうか?
宣言では型だけ書いているという意味で

68 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 19:04:54 ]
>>67
引数の(型の)話しかしてないよ
引数の型がhogeへの参照だということ

69 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 20:53:58 ]
日本語でOK

70 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 23:44:40 ]
コンパイラVisualC++、OS VISTAでウィンドウズプログラミングをしているのですが、
あるプッシュボタンを押すとWM_KEY系を処理してくれなくなるバグが発生してしまいました。
ボタンを押す前はきちんと処理をしてくれるのですが、
ボタンを押すとその後メッセージボックスが表示されるまで
キーを押しても反応しなってしまいます。(ほかのメニューなどはきちんと処理されているようです)
ちなみにほかのボタンではこのような不具合は起こりませんでした。
どなたか、ご教授お願いいたします。



71 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 01:25:16 ]
すみません。
C++言語でデストラクタを再起させても良いのでしょうか?
木構造の全ノードをデストラクタで開放したいです。

72 名前:デフォルトの名無しさん [2010/05/12(水) 01:26:32 ]
いいですよ。

73 名前:71 mailto:sage [2010/05/12(水) 01:31:24 ]
>>72
ありがとうございます。

74 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 14:37:41 ]
あーあ

75 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:19:58 ]
別オブジェクトのデストラクタを呼ぶ形になるだけなら問題ない

76 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:48:20 ]
>>75
それなら再帰とはいわん

77 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:58:09 ]
thisもパラメータとして考えるとれっきとした再帰
まあ普通は再帰と言わないだろうけど
木構造で考えるとそうなってんだろうなあ、とは思うが

78 名前:デフォルトの名無しさん [2010/05/12(水) 22:52:24 ]
「〜だけなら」とか「〜として考えると」とかは一切なく、
デストラクタが直接にでも間接にでも自身を呼び出す再帰関数であって全く問題ない。

79 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 02:14:33 ]
~A() 内で this->~A() は規格で違法なんじゃね?
きちんと調べてないけど

80 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 15:37:18 ]
ソケットプログラミングでおぬぬめの本はありますか。



81 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:47:37 ]
>>79
うんだろうね。
規格は知らないけど、デストラクタの二重呼び出しという不正なコードになるね。
引数も無いから再帰の終了条件も無いし意味の無いコードだな。

82 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:49:47 ]
規格を知らない奴がごちゃごちゃ言うなw

83 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:58:53 ]
>>79 = >>81 = ド素人

84 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 14:20:36 ]
教授とか就職先の人とかに「君Cできる?」って聞かれたときに
「できますよ」って答えるにはどのくらいの知識が必要?

85 名前:デフォルトの名無しさん [2010/05/15(土) 14:24:17 ]
>>84
知識は関係ないよ。やる気を試しているだけ。
仕事が欲しくないなら「できません」って言えばいい。

86 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 02:36:53 ]
>>85
>>84はあれだよ。つまり『やらないか』って言われたんだと思うよ。
「はじめてだけど……がんばりますっ!」って言えば高ポイントだったに違いない。

87 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:52:12 ]
ありすぎて困るw

88 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 22:45:27 ]
一つ質問させてください。

あるオブジェクトを登録できる管理クラスを用意し、
オブジェクトを登録後、オブジェクトが削除されたら登録も
自動的に解除するという機能を入れようと考えています。
管理クラスからもオブジェクトメソッドにアクセスできるようにしたいのですが、
この場合単純に相互参照を使用するのが一番良い方法なのでしょうか?

現状ではこのような形を考えています。
class Child{
private:
Controller* m_pController; // Controller::register時に入る

public:
~Child(){ m_pController->unregister( this);}

void setControllerPointer( Controller* pController){ m_pController = pController;}
void update( void); // Controllerから呼びたい
};

class Controller{
private:
Child* m_pChild[6];

public:
void redister( Child* pChild, unsigned int slot);
void unredister( Child* pChild);
};

よろしくお願いします。

89 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 01:10:41 ]
>>88
相互参照は後々トラブルの元だから避けるのが一番良い方法。
登録解除でオブジェクトを削除にするのが無難。所有者をはっきりさせるように設計しよう。
俺も昔そういう構造を作ることもあったけど今は作らないようにしている。

90 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:16:12 ]
質問です。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string org = string("org");
string org2 = string("org2");
string org3 = string("org3");
string &str = org; // コピーコンストラクタで初期化
string &str2 = org2;// コピーコンストラクタで初期化
string &str3(org3);// コピーコンストラクタで初期化
str2 = org; // コピー代入
str3 = org; // コピー代入
return 0;
}
コメントの理解で良いのでしょうか。
string &str2 = org2;がよくわかりません。



91 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 15:32:17 ]
>>90
>// コピーコンストラクタで初期化
というのは3つとも全部間違い
参照をセットしているだけで、コンストラクタが呼び出されたりはしない

92 名前:90 mailto:sage [2010/05/17(月) 20:55:29 ]
>>91
とても勉強になりました。参照難しいです。
ありがとうございます。

93 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 21:31:04 ]
>>89
ありがとうございます!
やはり方向ははっきりさせないとあかんのですね

94 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 23:52:46 ]
9×9の2次元配列を3×3の小さなブロック9個で区切り左上から
0,1,2,
3,4,5,
6,7,8,と番号をつけるとします。
各番号のブロックにある数字を足し、1次元の配列にブロック内の数の合計を保存したいです。
以下のプログラムを書いた場合、1次元の配列の添え字を工夫すると簡単にプログラミングできる
と聞いたのですが、どうしても思いつきません。アドバイスお願いします。

(i=0;i<10;i++)
(j=0;j<10;j++)
total[ここの添え字を工夫]=data[i][j];

totalを2次元配列にする方法は思いつくのですが、1次元に保存する方法がどうしてもわかりません。
よろしくお願いします。

95 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 23:55:18 ]
数独?

96 名前:デフォルトの名無しさん [2010/05/21(金) 00:05:07 ]
int data[81];
int total[3][3];

for(n=0;n<3;n++)
for(m=0;m<3;m++)
for(j=0;i<9;i++)
for(i=0;j<9;j++)
total[n][m] = data[m*3+i + (n*3+j)*9];

97 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:13:43 ]
for(i = 0; i < 9; i++)
total[i] = 0;

for(i = 0; i < 9; i++)
for(j = 0; j < 9; j++)
total[(i / 3) * 3 + j / 3] += data[i][j];

98 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 03:23:12 ]
8つのCPUが動作している環境において、
GDBでのデバッグ時に各CPUのプロセスで
set debug_flag2 = 0x00008040
set test_flag5 = 0x00802020
などとと入力したい。

これを8回も入力するのが大変なので
一つのCPUで入力すれば各CPUでも設定されるようにしたいのですが
そういう処理って可能ですかね?
(第一引数をデバッグフラグ名の文字列, 第二引数をフラグ値
のような関数を作成したい)

99 名前:94 mailto:sage [2010/05/21(金) 23:02:14 ]
>>96+97
ありがとうございます。

もう少し大きいM×Nの配列で、p×qサイズごとの合計の値を調べるにはどうしたら良いでしょうか?

100 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 23:36:59 ]
応用力皆無だな



101 名前:デフォルトの名無しさん [2010/05/21(金) 23:43:35 ]
>>99
int data[M*N];
int total[q][p];
int t,i,j,m,n;

for(n=0;n<N;n++)
for(m=0;m<M;m++) {
for(j=0;j<q;j++)
for(t=i=0;i<p;i++)
t = data[m*p+i + (n*q+j)*M];
total[n][m] = t;
}

102 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 23:50:13 ]
Mはpの整数倍なのか?
Nはqの整数倍なのか?

103 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 23:50:30 ]
なにやってるか理解できれば、それをアレンジするだけだと思うんだが

104 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 23:55:10 ]
まあ基本すらできなかったんだから応用なんて無理だね


105 名前:94 mailto:sage [2010/05/22(土) 00:00:20 ]
>>101
totalは1次元の配列で処理したいです。

>>102
Mはpの整数倍・Nはqの整数倍でおkです。

106 名前:デフォルトの名無しさん [2010/05/22(土) 00:06:05 ]
int data[M*N];
int total[q*p];
int t,i,j,m,n;

for(n=0;n<N;n++)
for(m=0;m<M;m++) {
for(j=0;j<q;j++)
for(t=i=0;i<p;i++)
t = data[m*p+i + (n*q+j)*M];
total[n*M+m] = t;
}

107 名前:デフォルトの名無しさん [2010/05/22(土) 00:12:18 ]
それ、授業中に3〜4行で書けるって言われたんじゃねぇの?


108 名前:デフォルトの名無しさん [2010/05/22(土) 00:30:51 ]
int data[M*N], total[q*p], n, t, i;

for(n=0;n<M*N;total[n++] = t)
for(t=i=0;i<p*q;i++, t=data[n%M*p+i%p + (n/M*q+i/p)*M]);

109 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 00:55:57 ]
int i, j, data[M][N], total[(M/p)*(N/q)];

for(i=0; i<M; i++) for(j=0; j<M; j++) total[i/p*(N/q)+j/q] += data[i][j];

110 名前:デフォルトの名無しさん [2010/05/22(土) 01:26:27 ]
int data[M*N], total[q*p], n, t, i;

for(i=0; i < M*N; i++)
total[i/(M/p)%(M/p) + (i/M)/(N/q)*(M/p)] += data[i];



111 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 01:33:47 ]
なんだろう、このアホは

112 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 01:36:34 ]
そんなに悔しかったのか?

113 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 01:49:25 ]
え?w

114 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 01:59:55 ]
wwwww

115 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 02:08:28 ]
>>109
>for(j=0; j<M; j++)
じゃなくてfor(j=0; j<N; j++) じゃね?

>>110
pとqを勘違いしてね?

116 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 02:41:15 ]
あんなの質問してるやつに分かるわけないだろwwwwww

117 名前:デフォルトの名無しさん [2010/05/22(土) 02:55:31 ]
>>115
> pとqを勘違いしてね?

そう?

118 名前:デフォルトの名無しさん [2010/05/22(土) 03:03:26 ]
int data[M*N], total[q*p], n, t, i;

for(i=0; i < M*N; i++)
total[i/p%(M/p) + (i/M)/(N/q)*(M/p)] += data[i];

119 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 03:07:05 ]
元は二次元配列なのに執拗にdata[M*N]に拘るのは病的だなw

120 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 03:35:46 ]
>>117
pとqは小さなブロックのサイズなのに、total[q*p]じゃそうならないだろ



121 名前:デフォルトの名無しさん [2010/05/22(土) 03:37:03 ]
ああ、そうだな。

122 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 08:23:57 ]
>>109
totalを0で埋めるか初期化しないとまともな結果にならんだろw

123 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 08:58:18 ]
staticならすべて解決

124 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 10:40:25 ]
標準の組み込み型って

char 1byte 固定
short 2byte以上
long 4byte以上
short <= int <= long

float 32bit 固定
double 64bit 固定
long double 80bit 固定

であってる?


125 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 10:49:21 ]
規格の話なら
char 1byte 固定
short <= int <= long
しか合ってない

1byte >= 8bit
short 最低でも-32767〜32767を表現可能
long 最低でも-2147483647〜2147483647を表現可能

float <= double <= long double
値の範囲は面倒くさいので略(最低でも表現でいないといけない指数とか桁数とかはある)

126 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 10:55:42 ]
つまり、
char = short = int = long
1byte = 32bit
でも規格合致

127 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 12:33:30 ]
VC++限定にしても long double 64bit だしなあ。

128 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 13:33:43 ]
g++は128bitだな
80bit分しか使ってないけどアラインメントの関係で
DOS時代に使ってたTurbo C++は80bitだったと思う

129 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 13:57:25 ]
>>128
>g++は128bitだな
-m96bit-long-double がデフォルトのこともある。環境によって異なる。


130 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:10:51 ]
DLLとかLIBファイルってバイト長整数長少数モデルとかいちいち考えてやらないといけないの?めんどくさくね?




131 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:34:55 ]
>>122
文句言うなら、回答書いてみろよ

132 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 17:08:07 ]
>>131
悔しいなら正解書いてみろよ


133 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 19:10:57 ]
>>131
「totalを0で埋めるか初期化」するって書いてるだろw

134 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 19:15:44 ]
コードかけよw

135 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 19:18:12 ]
え? そんなコードも書いてもらわないと分からないの?!

136 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 19:25:22 ]
自然言語で答えるだけならアホでも出来る。無駄レス。

137 名前:デフォルトの名無しさん [2010/05/22(土) 19:26:57 ]
まあ、アホには出来ないだろうが、ど素人でも出来る罠

138 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:08:31 ]
宿題は自分で解こう

139 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:30:13 ]
すみません、txtファイルに書いた2進数(10011101)をchar配列に保存しているのですが、
これをint型10進数(10011101 → 157)に直すシンプルな方法は無いでしょうか?

現状atoiで整数にしてから
10ずつ割りながら、整数で1の論理積を確認し、
別途1..2..4..8..と数値を足し合わせ作る手しか思い付かず。。
(※書き込み失敗したのか2度目の書き込みになります; もし別スレに誤爆しててマルチになってたらすみません;)

140 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:39:10 ]
文字列を後ろから走査してn桁目が1なら1<<nを足す




141 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:43:14 ]
特別便利な方法はないけど、普通にやれば十分では?

main()
{
 char buf[]="10011101";
 char *p;
 int x = 0;
 for(p=buf; *p ; p++) {
     x *= 2;
    if(*p == '1') x+=1;
 }
 printf("x=%d\n", x);  /* x=157 */
}


142 名前:139 mailto:sage [2010/05/22(土) 22:25:44 ]
>>140
ありがとうございます。ビットシフトでも良いのでしたね、記憶しておきます。

>>141
サンプルありがとうございます。
ポインタを使えばこうもシンプルに書けるのですね。 勉強になります。
2倍にする事でビットシフト同等の効果・・学んだ記憶が何とか蘇る程度でした。

とても勉強になりました。お2方、ありがとうございました。

143 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 20:38:46 ]
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

144 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 21:36:56 ]
int num[100][100],i,j;
int X1[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
int X2[4][4]={{15,14,13,12},{11,10,9,8},{7,6,5,4},{3,2,1,0}};
int X3[4][4]=・・・・;
int X4[4][4]=・・・・;

for(i=0;i<100;i++)
for(j=0;j<100;j++)
num[i][j]+=X1[i%4][j%4];

この様なプログラムにおいて、X1〜X4を簡単に切り替える方法はありませんか?
Xの配列は必要に応じて1〜4を選択したいのですが、プログラムで何カ所も使っているため、書き換えるのが非常に面倒です。
#define X "x1"
として、X[i%4][j%4]としてみたのですが、予想通り無理でした。
1カ所書き換えるとすべてに適用されるような方法はありませんか?

145 名前:デフォルトの名無しさん [2010/05/23(日) 21:40:06 ]
int *x[4][4] = {X1, X2, X3, X4};

146 名前:デフォルトの名無しさん [2010/05/23(日) 21:41:10 ]
int x[][4][4] = {X1, X2, X3, X4};

147 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:05:46 ]
#include <iostream>

int main(void)
{
int x1[4][4];
int x2[4][4];
int x3[4][4];
int x4[4][4];

typedef int (*px_t)[4];

px_t x[] = {x1, x2, x3, x4};

x[0][1][2] = 100;

std::cout << x1[1][2] << std::endl;

return 0;
}

typedefなしで書く方法がわからんorz

148 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:13:24 ]
int (*x)[4][4] = {x1, x2, x3, x4};

xはint型の[4][4]の配列へのポインタ

149 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:18:02 ]
>>145,146, 148
コンパイルできない

150 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:35:50 ]
int (*x[])[4] = {x1, x2, x3, x4};



151 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:39:23 ]
>>147
<typeinfo>を使って生の型を

152 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 22:42:44 ]
>>150
それでいいっぽいな
ただし配列名での初期化が出来るのはC++のみで、Cだとコンパイルエラーが出た

#include <iostream>
#include <iomanip>

int main(void)
{
int x1[][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int x2[][4] = {{17, 18, 19, 20}, {21, 22, 23, 24}, {25, 26, 27, 28}, {29, 30, 31, 32}};
int x3[][4] = {{33, 34, 35, 36}, {37, 38, 39, 40}, {41, 42, 43, 44}, {45, 46, 47, 48}};
int x4[][4] = {{49, 50, 51, 52}, {53, 54, 55, 56}, {57, 58, 59, 60}, {61, 62, 63, 64}};
int (*x[])[4] = {x1, x2, x3, x4};
int i, j, k;

for (k = 0; k < 4; k++) {
std::cout << "x = " << (k + 1) << '\n';
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++)
std::cout << std::setw(4) << x[k][i][j];
std::cout << std::endl;
}
}
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<201KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef