トップページ⇒tech
1001コメント302KB

はきだめC/C++下級者の質問箱

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/08/17(水) 14:20:27
はきだめのスレへようこそ

ここは、C/C++に挫折し、それにもかかわらず、C/C++やらなければならない者達がたむろするスレです。
なお、質問する人は回答はあまり期待しないでください。
0002デフォルトの名無しさん2005/08/17(水) 14:22:45
終了
0003デフォルトの名無しさん2005/08/17(水) 14:45:01
sinekuzu
0004デフォルトの名無しさん2005/08/17(水) 17:28:19
笑える。
0005デフォルトの名無しさん2005/08/17(水) 17:29:13
なにこの良スレ
0006デフォルトの名無しさん2005/08/17(水) 17:46:45
なんで上級者は、

*p++ = *q++;

って、書きたがるのですか?

*p = *q;
p = p + 1;
q = q + 1;

って書いたほうが、間違いがなくて、はるかに分かりやすいと思うけど、
こう書いたら、死ぬほど怒られた・・・
0007デフォルトの名無しさん2005/08/17(水) 17:48:08
>>6
処理が遅くなる
0008デフォルトの名無しさん2005/08/17(水) 17:52:06
>>7
ハハハハハ。
「はきだめC/C++下級者の質問箱」ならではのナイスレスw
0009デフォルトの名無しさん2005/08/17(水) 18:08:01
>>6
プログラム言語c++の165p〜167Pを
立ち読みしてください。
0010デフォルトの名無しさん2005/08/17(水) 18:18:11
屁をしたくなったので思いっきりぶっ放したら、液状便がパンツについてしまいました。
どうすればいいですか?
0011デフォルトの名無しさん2005/08/17(水) 18:21:01
とりあえずにおいを嗅いでそのあと放置
0012デフォルトの名無しさん2005/08/17(水) 19:26:09
>>10
俺ならつりセットして道路に放置、釣れるまで待つwww
0013デフォルトの名無しさん2005/08/17(水) 19:53:41

少なくとも
p=p+1;はやめとこうな。
0014デフォルトの名無しさん2005/08/17(水) 20:05:29
*p++ = *q++;

だと一行に情報が詰まってって、瞬間的にやってることが理解できる。
慣用句みたいなものだし。

*p = *q;
p = p + 1;
q = q + 1;

だと、3行見ないといけないので、理解速度落ちる。
0015こえだめ2005/08/17(水) 22:11:24
コンパイル通らないだろうけど、
敢えて書くとしたら
(*p)++=(*q)++じゃなくて
*(p++)=*(q++)という意味だろう
*型は、入れ物の最初のアドレスを示す
この感覚を持っておくのは、間違いを防ぐために重要だよ
0016デフォルトの名無しさん2005/08/17(水) 22:57:04
>>6
どうせだったら
p[0] = q[0];
p = &p[1];
q = &q[1];
と書いてみてはどうだろう。
きっとその先輩も納得してくれるはず。
0017デフォルトの名無しさん2005/08/17(水) 23:43:53
フリーのC言語コンパイラなんてあんの?
0018デフォルトの名無しさん2005/08/17(水) 23:47:24
>>17
VC7.1
0019デフォルトの名無しさん2005/08/17(水) 23:52:15
>18
レス
アリガトウゴザマス
0020デフォルトの名無しさん2005/08/18(木) 00:02:00
>>19
ここは「通報しますた」と返す所じゃないか?
0021デフォルトの名無しさん2005/08/18(木) 01:17:42
*++p=*++q,*r++?*s++:*++t;
0022デフォルトの名無しさん2005/08/18(木) 01:20:24
>20
皮肉りますた
0023デフォルトの名無しさん2005/08/18(木) 02:40:49
>>21
すごいな。Cプログラマーは、これを一瞬見ただけで理解できるのか・・・
下級者な俺は、カッコとかつけてみて、一個ずつ考えてかないと何やってるのか
サッパリ分からないよ。

こんなの、どうやったら一瞬見ただけで分かるようになるのですか?
てか、なんで上級者は、できるかぎり分かりにくく書くように努めるのですか?
0024デフォルトの名無しさん2005/08/18(木) 02:48:34
>>21
俺も凄いと思った。こんなコードを一瞬で理解できるなんて、天才か基地外の
どちらかだな。どちらかというと後者の方だろうな。
0025デフォルトの名無しさん2005/08/18(木) 02:53:16
むしろアフォ
0026デフォルトの名無しさん2005/08/18(木) 03:37:00
*(p)=*(q),p=p+1,q=q+1,*r,r+=1,?*s++:*++t;
0027デフォルトの名無しさん2005/08/18(木) 08:39:28
stdioはスタジオと読むのですか?
0028デフォルトの名無しさん2005/08/18(木) 09:38:34
#include <studio.h>

だめだ、エラーが出るOrz
0029デフォルトの名無しさん2005/08/18(木) 10:14:52
#include <megadlib.h>

だめだ、エラーが出るOrz
0030デフォルトの名無しさん2005/08/18(木) 10:57:09
>>27
すたんだーどあぃおー
0031デフォルトの名無しさん2005/08/18(木) 11:13:30
何この良スレ
0032272005/08/18(木) 11:21:25
>>30
由来は知っています。読み方が知りたいです。
0033デフォルトの名無しさん2005/08/18(木) 11:22:04
>>32 いや、>30が読み方だ。
0034デフォルトの名無しさん2005/08/18(木) 11:24:27
僕はすたっどあいおーってよんでる。
上級者向けの本に書いてあった。僕は上級者じゃないけど
0035デフォルトの名無しさん2005/08/18(木) 11:26:35
えすてぃーでぃーあいおー
0036デフォルトの名無しさん2005/08/18(木) 11:54:08
僕は「ストゥドゥアイオー」と読んでいます。
カタカナでは表現しきれない発音なので困っています。
0037デフォルトの名無しさん2005/08/18(木) 12:38:08
>16
コンパイル通らないぞ
>p=&p[1];
>q=&q[1];

だいたい、
p[1]自体、*型のp+1なわけで、
Buhi* pa;
Buhi a[値];
なら、
pa=a;と書けるわけで、
しかし、a=pa;とは書けないわけで、
やりたけりゃ、
charならstrcpy[a,pa]もしくはlstrcpy使えるわけで、
strcpyやlstrcpyがあるのは、
このようにchar配列→char*型に入れられるという存在意義が大きいわけで
0038デフォルトの名無しさん2005/08/18(木) 12:40:45
このようにchar*→char配列に入れられるという存在意義が大きいわけで
0039デフォルトの名無しさん2005/08/18(木) 13:03:43
てことで、
p[値]なとき、pが示すのは、配列の先頭アドレス
*paなとき、paが示すのは、入れ物の先頭アドレス

世の中の本の説明はへたくそだと思う
0040デフォルトの名無しさん2005/08/18(木) 13:10:35
>>37
> コンパイル通らないぞ
配列として宣言するからだろ
0041デフォルトの名無しさん2005/08/18(木) 18:14:25
CってJavaと違ってコンパイラ無いと出来ないの?
0042デフォルトの名無しさん2005/08/18(木) 18:36:44
>>41
Java にもコンパイラ要るだろ?
しかも Java はコンパイラだけじゃなくランタイムまで要るだろ?
0043デフォルトの名無しさん2005/08/18(木) 19:12:40
ランタイムって何ですか?
0044デフォルトの名無しさん2005/08/18(木) 20:03:09
>42
失礼、知人から古いパソごと貰ったものですから・・・
Cみたいな値段するんですか?
0045デフォルトの名無しさん2005/08/18(木) 20:11:33
CもJavaもただで出来るっつうの…
VCのコンパイラもフリーであるし
0046デフォルトの名無しさん2005/08/18(木) 20:16:46
Java?あーあのCPUの性能を1/2以下にする糞言語の事ですか。
プログラマが楽をして、そのツケをユーザー側に押しつける最低言語。
0047VCでは2005/08/18(木) 20:28:31
例えば、MFCwizardでデフォでできてるFlame、Doc、Viewの各クラスは基本的に相互不可侵、
要は、例えば、Viewクラスから、CDoc::〜なんて、関数を使っちゃうことができない
(おそらく、この機能は、それぞれの基本クラスで、protect:指定されて関数が定義されているからではないかと勝手に推測してる)
だが、それでは、困るから、お互いのクラスをアクセスする為の関数が各クラスに少しだけ設けられている
これらを介すれば、例えば、Viewクラスから、Docクラスの関数を全てかどうか分からないが、スコープ(::)で使えなかったあらゆる関数が使えるようになる
で、これらのクラスの関係のしくみをとり仕切っているのがボスであるCWinAppクラス
この派生クラスであるC〜Appクラスでドキュソメントテソプレートというテンプレート(テンプレ自体はC++の機能。おそらく雛型はCWinAppにあると勝手に推測している)というのを使って、
Flame(子も含め)、Doc、Viewの各クラスの関係を定義している
実装は、C〜AppのInitInstanceにある

はきだめらしく、変かもしれない
0048デフォルトの名無しさん2005/08/18(木) 20:30:36
RUNTIME_CLASSの実装は、C〜AppのInitInstanceにある
0049デフォルトの名無しさん2005/08/18(木) 20:41:43
CRuntimeClassのDocTemplete実装は、C〜AppのInitInstanceにある
というのが正しいかもしれない
とにかく、InitInstanceにRUNTIME_CLASS()という関数がある
0050デフォルトの名無しさん2005/08/18(木) 21:36:24
間違い発見
>Viewクラスから、CDoc::〜
C〜Viewクラスから
C〜Doc* pDoc;
pDoc->〜
なんてことはできない
0051デフォルトの名無しさん2005/08/18(木) 23:34:47
>>47
燃やすんですか?<Flame
0052デフォルトの名無しさん2005/08/19(金) 00:17:39
思ったより良スレになる予感
0053デフォルトの名無しさん2005/08/19(金) 00:27:44
実は俺も含め全て>>1の自演。
0054奥義のほんの一部だが2005/08/19(金) 00:33:05
Frame、Doc、Viewは、RUNTIMEでお互いのアクセスをがんじがらめにされている
ある意味、守られたオブジェクト群ともいえる
しかーし、この法の目を抜けて、気ままにお互いアクセスする手段もある
例えば、
同じプロジェクト上で、新規に.hと.cppを作り、Docを派生させてクラスを作ってやる(例えばclass ONEW:public〜)
注)ウィザードの新規クラスでは、コンボになくて、継承できなくなっている、MSがそんな抜け道させない為か・・・
そして、ViewでONEW on;とでも宣言してやれば、あら不思議、
on.〜でViewからDocがGetDocument関数も使わずに自由にアクセスできてしまう
ちなみに、この技、アマグラマーだけに許されている
なぜなら、制限がないだけにプログラマーが、仕事で使うと危ういからだ
ヤケドするぜw
なんちゃって
0055デフォルトの名無しさん2005/08/19(金) 01:02:45
ちなみに、老婆心ながら、試すなら、
ONEWクラスファイルのインクルードを忘れずに

それと、逆にいうと、新規クラスを作るときはRUNTIMEの目が届かない可能性があるから、注意が必要だとも言える
0056562005/08/19(金) 03:56:46
質問です。
c++についてなのですが、2つcppファイルを作って片方から片方の変数を見る事ができません。
メソッドについてはexternを使えば参照できる事がわかったのですが、変数などが参照できません。
教えてください。よろしくお願いします。
0057デフォルトの名無しさん2005/08/19(金) 07:37:00
>>56
メソッドってなんだろうな…と。
関数は普通に関数宣言で。変数は extern で。
宣言と定義の意味をちゃんと理解しておこう。
0058デフォルトの名無しさん2005/08/19(金) 13:51:19
>>54
ゴチャゴチャしててよく解らんが、もしかして
>そして、ViewでONEW on;とでも宣言してやれば
View に Doc を内包させようとしてる?
そら確かに掃き溜めらしいが…
0059デフォルトの名無しさん2005/08/19(金) 14:29:11
掃き溜めなら掃き溜めらしく外部変数でクラス間通信
0060デフォルトの名無しさん2005/08/19(金) 18:12:58
>>6
せめてこうしようぜ。これなら俺は許す。
*p = *q;
p++;
q++;
0061デフォルトの名無しさん2005/08/19(金) 18:22:20
>>56
クラス宣言に class を使わず struct を使う(最低)。
0062デフォルトの名無しさん2005/08/19(金) 19:04:59
>>56
CとC++では変数のスコープが違っているから注意せよ。
C++はわざわざextern付けないと、グローバルにならない。staticはもはや
classやstruct中でしか使われなくなった。
0063デフォルトの名無しさん2005/08/19(金) 20:31:40
>>62
CでもC++でもグローバル変数の宣言にはexternが必要だが。
0064デフォルトの名無しさん2005/08/19(金) 21:18:04
cout や cin の out や in は分かるんですが、
その上にくっついている、 c って何の意味があるんですか?
command? それとも c++? の略かなんかですか?
0065デフォルトの名無しさん2005/08/19(金) 21:22:07
>>64
Console
0066デフォルトの名無しさん2005/08/20(土) 01:18:14
cprintf の c と同じ
0067デフォルトの名無しさん2005/08/20(土) 08:41:19
下級者って何?
0068デフォルトの名無しさん2005/08/20(土) 16:22:19
下級者:自分が分かってないことを分かってるヤツ
上級者:自分が分かってないことを分かってないヤツ
0069デフォルトの名無しさん2005/08/20(土) 16:33:51
俺:自分が分かってることを分かってるヤツ
0070デフォルトの名無しさん2005/08/20(土) 22:48:38
>>62
関数内
0071デフォルトの名無しさん2005/08/22(月) 14:38:09
ヘッダファイルの必要性を教えてください。なんで.cppに書き込んじゃダメなの?
0072デフォルトの名無しさん2005/08/22(月) 14:48:26
おれは iostream とかも全部 cpp にコピーして使ってるけど全然問題ないよ。
どんなでかいプログラムも一本のファイルになるからお勧めだよ。
0073デフォルトの名無しさん2005/08/22(月) 14:54:10
いかにも掃き溜めっぽい回答乙
0074デフォルトの名無しさん2005/08/22(月) 17:34:13
>>72
俺もそれやってるよ。ヘッダファイルを全部コピペで一本のソースに
貼り付けてる。プログラムを一つも書かなくても、ソースの大きさが100MBを
超えて、すごい快感だよなww
0075デフォルトの名無しさん2005/08/22(月) 18:48:11
俺なんか、毎回iostreamとかvectorとか全部コピーするの手動だとめんどくさいから、
全部1ファイルにマージするツール作ったよ。
GUIフロントエンドから、使用したいクラスを選択すると、関連ソースを全部1ファイルに
してくれるから、あとは自分のコードを追加するだけという優れもの。
0076デフォルトの名無しさん2005/08/22(月) 18:48:37
>>71
例えば、とあるクラス(or構造体)HogeをA.cppに書いたとする。
しかし、別のファイルB.cppでも同じクラスを使いたい場合ってのが出てくる。
そんなとき、ヘッダファイルにHogeクラスの宣言を書いておけば
それをインクルードすることで共通のクラスを使える。

簡単にまとめるとこんな感じ。
-- A.h ----------------------
class CHoge{
 CHoge();
 int Test();
 …
};
-- A.cpp ----------------------
#include "A.h"
CHoge:CHoge(){
 …
}
int CHoge:Test(){
 …
}
-- B.cpp ----------------------
#include "A.h"
void Func()
{
 CHoge hoge;
 hoge.test();
}
------------------------------

もちろん、クラスだけじゃなくてマクロや関数定義でもOK
0077デフォルトの名無しさん2005/08/22(月) 19:48:26
だから逆に全部ヘッダファイルに書いて、 cpp では include のみというのも
いけるよな。
main なんかどんな cpp ファイルでも必要だから、ヘッダファイルに書くのは常識だよ。
0078デフォルトの名無しさん2005/08/22(月) 20:21:07
>>71
まじめに答えると量が多くなってくると面倒くさくなる。
打ち間違いも心配。コピペでもなんとなく不安。
0079デフォルトの名無しさん2005/08/22(月) 20:31:45
>>71
じゃぁ私もまじめに答えよう。
コピーペーストだと、一箇所書き換えると
そこからコピーしたファイル全部を修正する必要がある。
.h にまとめておくと、再コンパイルだけで済むのでミスが少なくなる。
0080デフォルトの名無しさん2005/08/22(月) 23:33:23
--- main.cpp ----
#include "main.h"
0081デフォルトの名無しさん2005/08/23(火) 14:16:14
ということで、
ヘッダファイル → 大盛りネギダク
.cppファイル → 牛鮭定食
という対応はわかったかな? >>71
0082デフォルトの名無しさん2005/08/23(火) 14:53:20
#include "/dev/tty"
0083デフォルトの名無しさん2005/08/24(水) 01:21:30
>>82
処理系依存
0084デフォルトの名無しさん2005/08/24(水) 16:25:12
#include IFILE
// $(CC) -DIFILE=\"....\" ...
0085デフォルトの名無しさん2005/08/27(土) 13:45:39
a
0086デフォルトの名無しさん2005/08/27(土) 14:10:48
あげるなぼけ
0087デフォルトの名無しさん2005/08/27(土) 17:24:43
(>_<) ゴメン!!
0088デフォルトの名無しさん2005/08/27(土) 17:36:01
ええがな!ええがな!
0089デフォルトの名無しさん2005/08/27(土) 18:04:48
C/C++を勉強したいですけど
何が必要ですか?
0090デフォルトの名無しさん2005/08/27(土) 18:13:47
根気と世間体を捨てる勇気
0091デフォルトの名無しさん2005/08/27(土) 18:25:15
たしかに >>90 の言うとおりだが、
他にコンピュータとコンパイラは最低限必要だな。
あぁ、気兼ねなくネットサーフィンできる環境があると
ちょっとした調べごとがさくっとこなせてベター。
0092デフォルトの名無しさん2005/08/27(土) 19:22:45
なぜ世間体を捨てねばならんのだww
0093デフォルトの名無しさん2005/08/27(土) 19:24:56
不思議なことに過去の変態犯罪者にプログラマがいない件
0094デフォルトの名無しさん2005/08/27(土) 23:42:57
根も葉もないなw
0095あぼーんNGNG
あぼーん
0096デフォルトの名無しさん2005/08/27(土) 23:58:16
>>93
勤め人だったら○○在住 会社員の山田太郎
フリーだったら○○在住 自営業の山田太郎
こうなるからじゃないのか?と思った。
0097デフォルトの名無しさん2005/08/28(日) 05:45:14
「自称プログラマー」ってのが最近あったような気がする
0098デフォルトの名無しさん2005/08/29(月) 12:21:13
カナシス
0099デフォルトの名無しさん2005/08/29(月) 13:53:20
>>97
・駅の点字ブロックに荷物を置いた老人を
 線路に突き落とした自称プログラマ。
・親子でキャッチボールしてる所に車で突っ込んだ後、
 父親を包丁でメッタ刺しした自称プログラマ。
・出張32◆Rb.XJ8VXow。
0100デフォルトの名無しさん2005/08/30(火) 10:38:42
親父メッタ刺しはプログラマだったかww
0101デフォルトの名無しさん2005/08/30(火) 12:54:23
朝鮮人じゃないの?
■ このスレッドは過去ログ倉庫に格納されています