2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【初心者歓迎】C/C++室 Ver.105【環境依存OK】

1 :デフォルトの名無しさん:2019/04/25(木) 06:54:38.08 ID:6xUIrXDu.net
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/

952 :デフォルトの名無しさん:2020/07/07(火) 07:56:58.77 ID:bJbvn87/.net
>>949-950
「大丈夫、パイプカットしてるから」みたいな感じかも。
break や continue を「去勢されたgoto」って喩えるじゃない。

if のネストが深くなるのは嫌だし、
関数からの早期returnも(デバッガで追うのが面倒になるので)ダメ、
goto なんかもっての外、という時に do {} while(0); でゴニョゴニョと。

で、コンパイラさんに「常に偽となる条件式です」とか警告されるの。

953 :デフォルトの名無しさん:2020/07/07(火) 12:13:10.64 ID:bEGKo5iM.net
>>951
はい、もちろん。
でもそれが2章でなくてもいいのかな、と。
出鼻くじく気満々やん、みたいな

954 :はちみつ餃子 ◆8X2XSCHEME :2020/07/07(火) 13:48:51 ID:tzlORGl2.net
>>953
選択肢があることが大事なんだって。

C の理屈だとビットパターンが並んだメモリ空間が広がっていてそこにオブジェクトを配置していくというモデルだから
ポインタを通してそこらを理解させるというのもひとつのやり方としてアリでしょ。
きちんとした理屈を後出しされると「先に言えや!」って気持ちになる人は少なくないと思う。

955 :デフォルトの名無しさん:2020/07/07(火) 19:09:26.79 ID:v3ijliVb.net
ポインターの何がそんなに難しいと感じるのかわからん
コンピューターの処理なんてアドレス操作ばっかりじゃん

コンピューターの仕組みがわかってないからなのかな?
ならば言語学ぶ前にコンピューターの仕組みを学ぶのが先じゃね?

956 :デフォルトの名無しさん:2020/07/07(火) 19:39:25.64 ID:aaXFzUCt.net
テスト問題にはポインタパズルとでもいうべきゴミみたいな問題が多いからね
わざわざ難しくして間違えるように幾重にも罠を張ったヤツ
そういうのでポインタ嫌いが増える

957 :デフォルトの名無しさん:2020/07/07(火) 21:02:20.63 ID:yByKJQAn.net
サイズ100を100個用意するより
サイズ10000を1個用意してアドレス割り振るとか好き
ポインタ変数分サイズ増えるのは目をつむる確保速度重視

958 ::2020/07/07(火) 21:28:33.53 ID:7uEBIb8C.net
>>945
私は ** を使うくらいなら *& の方がマシだと思っているのですが、 *& で書いた本はまったくないですね…

959 :はちみつ餃子 :2020/07/07(火) 22:00:58.59 ID:tzlORGl2.net
>>958
何をいいたいのかわかんないのでもうちょっとくやしく

960 :デフォルトの名無しさん:2020/07/07(火) 22:12:29.39 ID:TeF3RSyR.net
あんだけクズをバカにしてたのに、同じエディタを使ってたなんて!

961 :デフォルトの名無しさん:2020/07/07(火) 22:17:27.53 ID:4bY8cpqR.net
>>960
くやしいのうwwwww

962 ::2020/07/07(火) 23:10:29.18 ID:7uEBIb8C.net
>>959
https://ideone.com/LnS5rf

>>945
こういうのも、やっぱりサドになりますか…

963 :はちみつ餃子 :2020/07/07(火) 23:17:48.32 ID:tzlORGl2.net
>>962
そういうデザインのプログラムがあっても不自然だとは思わないが、
初心者向けでポインタの説明をする段階という前提を置くと参照と混ぜて示すのは混乱の元ちゃう?
& という記号の多義性がアレなのが根本原因ではあるんだが……。

964 ::2020/07/07(火) 23:21:02.99 ID:7uEBIb8C.net
>>963
>初心者向けでポインタの説明をする段階という前提を置くと参照と混ぜて示すのは混乱の元
そうかもしれませんね

>& という記号の多義性がアレなのが根本原因
まあ、そうですよね…

965 :デフォルトの名無しさん:2020/07/08(水) 08:50:17.72 ID:sJ2uy93A.net
>>947-948
同じ人からの連続投稿、ひとつの質問だと気づかなかった。

マクロの実体を do {...} while (0) で囲む定型については
「#define do whole false」でネット検索すると色々出てくる。
この場で説明するには少々分量が多いのだ。

966 :デフォルトの名無しさん:2020/07/08(水) 09:23:35.50 ID:hADFKHgu.net
そのうち
#define HOGE(FUGA) do{...FUGA...}while(0);
と描いてしまって失敗する

967 :965:2020/07/08(水) 18:00:01 ID:sJ2uy93A.net
あ、もちろん whole は誤り while で検索してくれ。

× 「#define do whole false」
○ 「#define do while false」

968 :デフォルトの名無しさん:2020/07/09(木) 20:13:12.08 ID:gJQJWBxs.net
テキストファイルに文字列を書き込みしたいのですが

ofstream ofs("test.txt",ios::ate | ios::in);
ofs << "hoge" << endl;

これだと動いているんですが
最後のendlを無くして"hoge"のみを書き込もうとすると動作しません
どういった理由なんでしょうか?

969 :デフォルトの名無しさん:2020/07/09(木) 20:17:07.59 ID:N+YU0rOq.net
flushしないと

970 :蟻人間 :2020/07/09(木) 20:22:54.18 ID:2UhyUN9n.net
読み書きは時間がかかる処理だから、読み書きの前に、小さなデータは一時的にバッファという記憶域にまとめて
貯めておき(まあ、キャッシュと似たようなものだ)、改行などがあれば、押し流す(flush)という処理をする。
この場合はendlがflushの役割をする。

971 :デフォルトの名無しさん:2020/07/09(木) 20:48:42.31 ID:gJQJWBxs.net
>>969 >>970
理解できましたありがとうございます!

972 :デフォルトの名無しさん:2020/07/11(土) 00:06:30.27 ID:87hwO6K6.net
ポインタを初心者に完璧に理解させる方法分かったわ。
ポインタ=ショートカットアイコンと教えればいいんだ。

メモ帳に文字書いて保存して、ショートカットアイコン作って「これがポインタだよ」って言えばいい。
メモ帳の容量見てごらん?100kbでしょ?ショートカットアイコンの容量見てごらん?1kbしかないね。
ショートカット開いて。文章変えて。ほら1kbのデータで本体が変わった。これがポインタの仕組みだよ。

完璧

973 :デフォルトの名無しさん:2020/07/11(土) 00:21:04.14 ID:lUabZX1b.net
ポインタの演算は?

974 :デフォルトの名無しさん:2020/07/11(土) 00:21:34.19 ID:nv0BNjEd.net
その程度の抽象化ならポインタのこと直接説明すればいいと思う

975 :デフォルトの名無しさん:2020/07/11(土) 08:24:16 ID:sGHMgavQ.net
住所録とかじゃダメなん?

976 :デフォルトの名無しさん:2020/07/11(土) 11:03:46 ID:J0INoyBc.net
ポインタの躓き処ってそういう場所じゃないから

977 :デフォルトの名無しさん:2020/07/11(土) 11:18:32 ID:60oNEnIZ.net
アセンブラから入ると
Cのポインタは色々と意味不明

978 :デフォルトの名無しさん:2020/07/11(土) 11:20:02 ID:fm8o+adg.net
嬉々として大量に出題されるポインタパズルが難易度を無駄に押し上げてる
この時のアドレスは何か、変数は何かと、無駄に凝った問題を作り易いのがポインタの難点

テストのための問題を作る必要があって、そこではふるい落とす必要がある
全員100点じゃマズいと思ってる教師がいるからね
でも教育が成功したと言われる全員100点だとダメ
ここに現行教育の限界点がある
すると、問題難易度は加速しつつ急上昇する

しかも大して面白くもなんともない問題が製造される
穴埋めよりも酷いのが

979 :デフォルトの名無しさん:2020/07/11(土) 11:20:10 ID:Rtii2xnW.net
レコード針みたいなもんじゃないの

980 :デフォルトの名無しさん:2020/07/11(土) 11:45:57.83 ID:J0INoyBc.net
自称「教科書」が間違ってたりするからな
そういうミスリードが初心者をさらに混乱させてる

981 :デフォルトの名無しさん:2020/07/11(土) 11:47:30.73 ID:60oNEnIZ.net
初心者用教科書は厳密じゃやくて良いんだよ

982 :デフォルトの名無しさん:2020/07/11(土) 11:49:05.50 ID:60oNEnIZ.net
高校生の教科書に
ニュートン力学は間違ってるとか
幾何光学は間違ってるとか
この世はユークリッド空間ではない
とか書いても混乱するだけ

983 :デフォルトの名無しさん:2020/07/11(土) 12:12:13 ID:J0INoyBc.net
>>981
百歩譲って厳密じゃないのを許すとしても
明らかな間違いは遺憾

984 :デフォルトの名無しさん:2020/07/11(土) 12:23:45.26 ID:60oNEnIZ.net
技術書に明らかな間違い?

985 :デフォルトの名無しさん:2020/07/11(土) 15:56:25.03 ID:sGHMgavQ.net
>>976
具体的にどういう場所なん?

986 :デフォルトの名無しさん:2020/07/11(土) 16:23:26.53 ID:60oNEnIZ.net
& * の多義性
複合型の記述方法
メモリ確保解放
ポインタの型と演算の結果の違い
const, volatile

987 :デフォルトの名無しさん:2020/07/11(土) 20:36:15.52 ID:87hwO6K6.net
わかってさえしまえば簡単至極なのに、これほど初心者に教えるのが難しいこともそうはないなw
配列や関数の戦闘アドレスの渡し方をわかりやすく出来てれば難しいと思えることもなかったかもしれない。

988 :デフォルトの名無しさん:2020/07/11(土) 20:47:57.04 ID:kW8apoiX.net
戦闘アドレスと防御アドレスを使いこなして達人を目指せ!

989 :デフォルトの名無しさん:2020/07/11(土) 20:48:58.21 ID:lUabZX1b.net
>>987
そうか?

990 :デフォルトの名無しさん:2020/07/11(土) 21:29:54.59 ID:sGHMgavQ.net
チートコードはベースアドレスからの距離
ベースアドレスが変わってもチートコードは変わらない
ゲーム好きにはこんな感じか

991 :デフォルトの名無しさん:2020/07/12(日) 08:37:19.13 ID:03QLQuvk.net
vc++でバリアント型って使えますか??

992 :蟻人間 :2020/07/12(日) 10:07:58.94 ID:bazuV89L.net
>>991
Boost

993 :デフォルトの名無しさん:2020/07/12(日) 10:26:26 ID:NK7E+AG5.net
pythonのctypes使うときに役に立ってる
ctypes.POINTERとか謎仕様過ぎた

994 :デフォルトの名無しさん:2020/07/12(日) 21:37:47.68 ID:PErY82OB.net
C++って団塊ジュニアまでの言語って感じがする
これから爆発的に需要が伸びていく可能性なんてないよね?

995 :デフォルトの名無しさん:2020/07/12(日) 21:51:26.17 ID:dmFXGwc3.net
伸びるとかよくわからんが
今時のウェーイってしている言語にしたって、大抵コア部分のライブラリやらランタイムやらはcやc++で書かれているのだから

その言語のお客様で済む用途を越えて何かしようとしたら、出来ないと困るだろ

996 ::2020/07/12(日) 22:14:41.38 ID:YoHAyY/u.net
>>994
世に存在する計算機言語の半分以上は C/C++ で記述されていたりするのです

997 :はちみつ餃子 :2020/07/13(月) 02:47:06.70 ID:vJz2FqxN.net
陣取り合戦をしているわけでもなし、
需要が伸びればいいってもんでもない。
重要なのは居場所を見つけるかどうかって話だと思う。

C++ が適切とは言えないけど C++ が比較的マシという理由で C++ が使われている
というのはよくあることで、新しい言語が出現してそういう分野を奪っていくこともある。
もともと C++ がイマイチだったところが消えるだけで、
どんどん衰退して消える運命ってほどのもんではない。

998 :デフォルトの名無しさん:2020/07/13(月) 06:38:36.94 ID:17o/9bhC.net
そろそろ次のスレッド…このスレッドが終わる前に告知を…。
俺は…ダメだ(がっくし)。

999 :デフォルトの名無しさん:2020/07/13(月) 07:37:30.49 ID:/O+2Yaja.net
1000なら次スレなし

1000 :デフォルトの名無しさん:2020/07/13(月) 07:53:41 ID:V+zIL/Eb.net
のとおり

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
269 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★