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


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

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



1 名前:デフォルトの名無しさん [2009/03/02(月) 00:36:19 ]
スレを勃てるまでもない低俗な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/

96 名前:デフォルトの名無しさん [2009/03/05(木) 19:40:34 ]
h = FindFirstFile( path, &data );
で FindFirstFile( )関数の失敗した値
INVALID_HANDLE_VALUE
が返ってきた時
if( INVALID_HANDLE_VALUE == h )
{
FindClose(h);
}
ってやるんだけど 失敗したときのハンドル値で FindClose() していいの?
失敗してるこの場合 FindClose() はいらないの?

97 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:47:00 ]
>>96
していい。
ttp://msdn.microsoft.com/ja-jp/library/cc429233.aspx

98 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:48:43 ]
ごめん。間違えた。
いらなかった。

99 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:49:18 ]
ごめん。間違えた。
いらなかった。

100 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 20:00:59 ]
ごめん。間違えた。
助かった。

101 名前:デフォルトの名無しさん [2009/03/05(木) 22:29:35 ]
構造体の中に、別の構造体のポインタがあるとして、そのポインタが
指し示すアドレスから、そのデータ型の構造体が連続して配置されている場合、
n番目のデータにアクセスしたい場合、どうしたら良いでしょうか。(下記サンプル参照)

typedef struct {
unsigned char test1;
unsigned char test2;
} Test_set1;

typedef struct {
unsigned short test3;
unsigned short test4;
} Test_set2;

typedef struct {
Test_set1* test5;
Test_set2* test6;
} Test_all;

volatile const Test_all Test_struct = {
(Test_set1*)0x3FFFFFA0,
(Test_set2*)0x3FFFFFB0 ←メモリ上では、Test_set2型がn個連なっている。
};

void Test_func(unsigned char index){
unsigned short tmp1, tmp2;
tmp1 = Test_struct.test6->test3;
tmp2 = Test_struct.test6[index]->test3; ←コレはダメぽい・・・
}

やっぱポインタを任意回数インクリメントか、indexを足すしかないでしょうか?

102 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:34:24 ]
tmp2 = Test_struct.test6[index].test3;

103 名前:101 mailto:sage [2009/03/05(木) 22:54:33 ]
>>102

おぉ・・・・・素早いレスありがとうございます。
確かにコンパイル出来るようですっ! 明日アセンブラで狙ったところに
アクセスしているか確認してみます。

この場合、test6 はポインタですが、Test_struct.test6[index] と書くと、Test_set2型の
RAM扱いになるんでしょうか?(ショボイ質問ですいません)

104 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:59:24 ]
p[n]は*(p + (n))と同じ



105 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 22:59:54 ]
RAMってw

106 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:23:12 ]
Random Access Machomen

107 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 23:44:50 ]
こんなのがわかってないうちからアセンブリやってるの?
順番ちがくね?

108 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:04:27 ]
ハード屋なんじゃない?

109 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:08:36 ]
int nFibo[16] = { 1, 1 };
これの = { 1, 1 };
って・・・・なんでしょうか・・?
こんなの見たことありません・・!
これはどういう意味なんですか・・?

110 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:23:18 ]
nFibo[0] と nFibo[1] を1で初期化して残りは0で初期化。


111 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:28:44 ]
わかりやすい説明サンクス!

112 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:54:22 ]
ロベールのC++教室はC++と銘打っているが、ほとんどCの勉強という感じだ。
Effective C++などには配列はやめてvectorとstringを使おうと書かれているが、
ロベールでは徹底的に配列を使う(というより全編にわたってほぼ余すところなく登場する)。
配列はポインタと表裏一体なので、初心者は最初からCの一番の鬼門と真正面から向き合うことになる。
メモリ操作に関する知識は絶対に必要なのでこのスタンスもわからなくはないが初心者にはやや厳しくはないか?
他にも、ビット列の再解釈がしばしば登場したり、ハンガリアン記法が採用されていたり。
まぁ、いずれも必要な知識だけどさ。

113 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:11:00 ]
C++の解説には、色々な入口から入る方法がある。
どの解説も同じでは面白くない、違う方が良い。
Cから順番に説明があったり、
いきなりクラスから説明したり、
それを読者が選ぶ事が出来る。良い時代です。
それぞれが、それぞれに良い




114 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:23:41 ]
む。なるほどそういう考え方もあるか。確かに。
自分はCを学ぶにあたってポインタの習得にだいぶ苦労したので
Accelerated C++でCを勉強したときは目からうろこだった。



115 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:41:15 ]
>>113
その考え方ステキだな。
俺は途中でロベールを読んだが、たま〜に知らない事が出てきて面白かった程度の記憶しか残っていない。
(逆に言えば特につっかからなかったとも言える。慣れてたからだろうけど。)
最初に読んでいたらきっと感慨も違っただろうなぁ。


116 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:58:46 ]
私の考え方は他人と違う。。同じかもしれない。
機械語を逆アセンブルするときは、逆順、後ろから読む。
そして、終わったら前から順次読む。
本を読む時も同じ。逆から読む。
変かもしれない
人それぞれです、その人に合ったものを選ぶ事が出来れば幸せになります。
自分自身を知って、マッチする方法を選ぶ能力を養う
これが幸せへの法則かもしれません。





117 名前:デフォルトの名無しさん [2009/03/06(金) 15:52:32 ]
数値入力で1〜9999の範囲内で入力してくださいという
プログラムで範囲外だとエラー文を表示するのですが、
long型のオーバーフローする値(4294967296)を打ち込むと
入力エラーにならず読み込んでしまいます。
どういった対策をすればよいのでしょうか?
ちなみにint型で定義してあります。

118 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:53:13 ]
コードは?

119 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:53:40 ]
>>117
doubleで読み込めば

120 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:41:16 ]
>117
入力部分と、保持する数値とを分離するとか。

>119
現実的にはともかく、理論的には変わんなくね? そうでもない?

121 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:45:22 ]
string に読み込んで桁数判定した後数値変換するとか。

122 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:53:07 ]
>>117
そういう時のscanf

123 名前:デフォルトの名無しさん [2009/03/06(金) 18:15:57 ]
scanfを恥ずかしげもなく使う男の人って。。。

124 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:17:48 ]
男女以前にプログラマとしてどうか



125 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:18:29 ]
別に普通

126 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:45:28 ]
int64整数の補数をint32|int16へ最大値切り詰めにしても余剰bit切り捨てにしても
1〜9999条件なら 4294967296 (0x1 0000 0000)は弾いてくれると思うが
如何か

127 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:27:15 ]
strtol を使えば大きすぎるのを入れたときはLONG_MAXになるから弾けるよ

128 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:35:05 ]
>>126
弾けるのは4294967296とか、一部じゃないかw

129 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:33:28 ]
キャストの弊害や精度不足の問題なら対処のしようがあるが
もしも 117 の不具合症状を含むライブラリや CPU が有るようなら大問題
概念的指摘ならば問題はないが数字を出して上手くいかないと主張するなら
実行環境を示して頂きたい。

130 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:53:18 ]
バカは黙ってろw

131 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:54:39 ]
>>117
>ちなみにint型で定義してあります。
といっているが、そもそもオーバフローする値が入力できるんだから元は
文字列とかint以外の値でしかありえない
それをintに変換した後ではじくのは不可能

面倒くさくても地道にやるしかない

1) 文字列のまま取得
2) 前後の空白とかとる
3) 数値以外のものがあったらエラー
4) 先頭の0を削除
5) 5桁以上ならエラー
6) 空文字列なら0
7) 整数変換
とか、まあがんばれ

132 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:31:45 ]
まぁ、strtol()を使えば変換終了点が得られるからそこをチェックすれば事が足りるな。

133 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:18:09 ]
ポインタは俺の理解を超えてやがる・・・・!!!

134 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 07:38:06 ]
>>133
どうしたw突然何があった。
…まあ状況次第ではある意味大半の人の理解を超えているよ。



135 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 07:48:07 ]
自分で組むだけなら、Cは良い言語だと心から言えるが、
他人のソースを読むと微妙な気分になる。
C++はまあまあ良い言語だが、他人のソースは
くそったれと思う。

って事かな?

136 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 08:22:39 ]
俺は自分のソース見てくそったれと思う
もっときれいに書けないのかよ昔の俺

137 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 08:26:16 ]
それはあなたの進化の証。

138 名前:デフォルトの名無しさん [2009/03/07(土) 12:04:25 ]
ソースなんて動けばいいよ。動くことが見た目に判ればそれでいい。

139 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:45:17 ]
ポインタを解りやすく解説してくれるC++のサイト教えてください・・・
ロベール先生すいません
あなたの説明は僕の理解を超えている

140 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 13:47:43 ]
>>139
適当な本を買った方がいいよ。
サイトは限界があると思う。
…そしてアドレスとポインタが分からないならロベール先生のせいじゃなくてまだC++に入るほどの腕じゃないと言うことだからC言語の本が良いと思うよ。

141 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:02:08 ]
アセンブラやればポインタはわかる。
なのでPCプログラミングより8bitマイコンでも触るのお勧め。

ポインタが判らないという事はメモリマップとかスタックイメージも
脳内に浮かんでいないのは確実な訳で、それは計算機の知識が決定的に
欠けてる訳で、ってことはC/HWに限らずJVMやCLRも理解できない訳だから
一番見通しのいい低レベルハードウェアを触って身に付けるといいと思う。

142 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:39:23 ]
>>141
あっそ。

143 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:53:10 ]
#include <iostream.h>/*ロベール教室より*/

void ChangeToShohwa(int x)
{
if(1926 < x && x < 1989)
x -= 1925;
else
x = 0;
}

void Shohwa()
{
int nYear;

cout << "西暦を入力して下さい > ";
cin >> nYear;

ChangeToShohwa(nYear);
if(nYear)
cout << "その年は昭和 " << nYear
<< " 年です。" << endl;
else
cout << "その年は昭和ではありません。" << endl;
}

int main()
{
Shohwa();
Shohwa();
return 0;
}
なぜこれで失敗するのかが理解できない・・あほでごめんなさい

144 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:07:32 ]
>>143
www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01034.html
>

普通に理由が書かれてるじゃん。



145 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:08:00 ]
>>144
手滑った

www7b.biglobe.ne.jp/~robe/cpphtml/html01/cpp01034.html
>引数は、新たに変数が作られ、それに値が代入されるという仕組みになっているからです。

146 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:17:51 ]
>>142 何か気に障るようなこと言ったか?

147 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:20:35 ]
ポインターは簡単、ポインターの解説が難しい。 上手に説明できたら天才。

148 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:33:45 ]
つまり、なんだかんだでnYearの値が変更できないってこと・?

149 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 15:46:37 ]
なんだかんだというかそのやり方だとnYearがこぴってわたされて
そのこぴったのを変更しているだけ

150 名前:142 mailto:sage [2009/03/07(土) 16:14:00 ]
>>146
…俺の深読み誤解か。
スマン。

151 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 17:55:04 ]
>>147
ポインターのような人間には解りづらく、そして機械に都合のいいように作られたものの使用を強制する言語はダメポ言語
普通は人間に合わせて言語が作られるべきだろ

152 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:16:59 ]
ポインターは日本語に似合う。皆は知らぬうちに日本語会話の中でポインターを使っている。

153 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 18:33:00 ]
>>151の考える素晴らしい言語のソースも、
ポインターを駆使して記述されています。

154 名前:デフォルトの名無しさん [2009/03/07(土) 18:47:53 ]
ボイン太さいこー!



155 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:01:39 ]
>>152
This is it.

156 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:11:01 ]
int **(*i[10])[4]
int (*i())[6]
int *(*(*i)())[4]
数秒以内にポインタiが何を指しているのか理解できないと
Cの初歩にすら達してないと言われた
お前らなら、一目瞭然で数秒どころか一瞬だろ

157 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:19:29 ]
>>156
実際そんな使い方はまったくしない。
一目でわかりやすい宣言をするのが上級者。

158 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:25:03 ]
実際は使わないが、錬度を試す訓練だよ

159 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:30:04 ]
数秒でわかったらすごいわ
俺の場合、特に最後は()の解析で時間かかるぞ

160 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:33:59 ]
そこに至るまでのコード次第
いきなり 156 が現れたら 書いた奴の精神状態を疑う。

161 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:59:17 ]
>>159
俺、今でも数秒では無理だが、宣言をすらすらと解析できないとなると程度しれるよな
まだまだ初級のおれがちょっと前に新人にこのp何さしてるのって聞かれたのがこれ
int (CC::*(p[3]))(void);
これぐらいなら頻繁に使うだろうし、ム板連中なら一瞬だろ
ちなみに>>156は会社の新人PGのC言語コースの理解度試験

162 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:12:25 ]
頻繁に使うか?
俺だったらまずtypedefするが…

163 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:24:13 ]
爆釣

164 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:24:22 ]
>>162
どういう風にtypedefするんだ?



165 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:02 ]
mist000.h18.ru/debug.cpp
メンバーイニシャライザを使用したコンストラクタをクラス定義の外に分離したいんだが、
g++でコンパイルするとこのようなエラーが出る。
--------------------------------------------------------
uha@seven:~/dev/uhaww$ g++ -Wall -o debug debug.cpp
debug.cpp: In constructor ‘TestException::TestException(std::string&)’:
debug.cpp:8: error: ‘sCause’ was not declared in this scope
debug.cpp:8: error: expected `{' at end of input
debug.cpp: At global scope:
debug.cpp:10: error: redefinition of ‘TestException::TestException(std::string&)’
debug.cpp:8: error: ‘TestException::TestException(std::string&)’ previously defined here
--------------------------------------------------------
分離すること自体考えてはいけないのだろうか...
メンバーイニシャライザ使わなければ分離できるのに。。

間違いがあればよろしくお願いします。


166 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:28:56 ]
>>162
まさか typedef int (CC::*(p[3]))(void)
なんて言わないよな
int (CC::*(p[3]))(void)が何をあらわすのか、解りやすくするtypedef頼むよ

167 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:29:28 ]
実はほとんど俺の自作自演

>>164
typedef int (CC::*ccpoint)(void);
ccpoint p[3];
こんな感じにするんじゃね?

168 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:34:07 ]
2ちゃんねる株式会社ではよく使います。

実際はベテランほど保守性を考慮して単純に書く。
Cの設計者でさえシンプルに書けと言ってるのに、
何を勘違いしてるんだろね。

169 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:38:15 ]
むずかしっすぎる!

170 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:46:27 ]
int (CC::*(p[3]))(void);
が頻繁に出てくるようでは駄目だと思うわ

171 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 20:57:19 ]
Visual C++ 2008 Express Editionの使い方がよくわかりません。

講座サイトの解説で使ってるVisual C++はちょっと違って
現在編集中のプログラムを実行する方法がわかりません。

ご教授よろしくお願いします。

172 名前:165 mailto:sage [2009/03/07(土) 21:01:49 ]
お騒がせしました、自己解決しました。

173 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:13:57 ]
>>171
F1を押してヘルプを読め

174 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:18:57 ]
>>171
スレ違いだろ



175 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:19:31 ]
int (CC::*(p[3]))(void)のpって何を指す
日本語で書いてくれ

176 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:21:16 ]
pは、配列です。何の配列かと言うと・・・次の人、どうぞ

177 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:22:20 ]
パス!

178 名前:175 mailto:sage [2009/03/07(土) 21:26:55 ]
あと、>>156
int **(*i[10])[4]
int (*i())[6]
int *(*(*i)())[4]
のiも頼む

179 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:34:36 ]
もしかして、voidさん入店されてはります?

180 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:40:12 ]
全然わからんw
1番目は多次元配列っぽくて、
2番目と3番目は関数ポインタの配列っぽいれすか?
あと>>161はメンバ関数へのポインタっぽい?

答えをたのむぅ。

181 名前:デフォルトの名無しさん [2009/03/07(土) 21:48:22 ]
実際のコードで、こんなの使っちゃダメだが、
Cの文法の知識として、本当におまえら、読めないのか?

javaばっかやってるから、バカになる

182 名前:175 mailto:sage [2009/03/07(土) 21:52:00 ]
>>180
俺と似たような,orzレベルだな

色々レスしてる人たちって解ってるんでしょ、なら教えてくださいなーーーー

183 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:02:29 ]
>>181
本当に読めないので、ぜひ、答えを

184 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:51:56 ]
int **(*i[10])[4];
( ((int[10])へのポインタ)[4] )へのポインタ ×2

int (*i())[6];
(int f()のような関数へのポインタ)[4]

int *(*(*i)())[4]
( (int *f()のような関数へのポインタ)[4] )へのポインタ

ということでいいのか?



185 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:00:32 ]
C言語パズルです、みたいなノリで出されるなら喜んでやるかも。

186 名前:180 mailto:sage [2009/03/08(日) 00:09:44 ]
1番目は「二次元配列へのポインタ」のポインタのポインタとなる要素数10の変数i。
2番目は二次元配列を戻り値とする関数i。
3番目は「関数ポインタを格納する二次元配列へのポインタ」へのポインタ。

わからーんw

187 名前:180 mailto:sage [2009/03/08(日) 00:50:52 ]
んー。一番目はいきなり間違いだな。
1番目は「二次元配列へのポインタ」のポインタのポインタとなる要素数10の変数iだとすると
int *(**i[10])[4]; と書く必要があるようだ。わからん・・・。答えはまだか。

188 名前:デフォルトの名無しさん [2009/03/08(日) 01:11:50 ]
int **(*i[10])[4]
intへのポインタのポインタの配列へのポインタの配列

int (*i())[6]
intへの配列へのポインタを返す関数

int *(*(*i)())[4]
intへのポインタの配列へのポインタを返す関数へのポインタ

189 名前:180 mailto:sage [2009/03/08(日) 01:21:47 ]
なるほど、int **(*i[10])[4]の最初のint **は納されている型になるのか。
んでもって、(*変数名)[4]が多次元配列へのポインタで、
変数名の後の[10]がその変数の要素数になる、と。

だんだんわかってきた。おもしろい。w

190 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:39:49 ]
外側から一つずつ剥がしていく。最初と最後の両側から剥がせるときは、最初を先に剥がす。
剥がしたものが、それぞれ
 int(などの普通の型名)であれば…… 「int」
 * であれば…… 「へのポインタ」
 [N] であれば…… 「の配列」
 (int,int) (など、カッコ内に型名)であれば…… 「が戻り値の型、(int,int)が引数の型である関数」
 MyClass:: であれば…… 「で、MyClassのメンバであるもの」
をつけていく。これで読めるはずだ。英語圏の人は逆向きにやるらしいけど。

191 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:45:13 ]
あと、これとは直接関係ない話だが、intへのポインタへのポインタは、intの2次元配列とは別物だからね。
「ポインタ⇔配列」の互換ができるのは、末尾の「〜へのポインタ」「〜の配列」の部分のみ。

だから、ポインタの配列はポインタへのポインタで受けることができるし、2次元配列は配列へのポインタで受けることができるが、
2次元配列をポインタへのポインタで受けるのは不正。

192 名前:デフォルトの名無しさん [2009/03/08(日) 01:51:13 ]
>>190
読めないよ。

int &a
int func<int>()

193 名前:180 mailto:sage [2009/03/08(日) 01:52:14 ]
大変よくわかりました。

194 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:56:42 ]
167は正しいの?



195 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:07:28 ]
正しいよ。

196 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 02:07:55 ]
>>194 うん






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

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

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