トップページ > プログラム > 2015年11月14日 > 1e4erM+I

書き込み順位&時間帯一覧

37 位/197 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000001100000002



使用した名前一覧書き込んだスレッド一覧
◆tAo.kQ2STk
C言語なら俺に聞け(入門編)Part 130 [転載禁止]©2ch.net
C++相談室 part120 [転載禁止]©2ch.net

書き込みレス一覧

C言語なら俺に聞け(入門編)Part 130 [転載禁止]©2ch.net
872 : ◆tAo.kQ2STk [sage]:2015/11/14(土) 15:56:02.24 ID:1e4erM+I
>>865
char* p = "ABC";
だと、pには文字列"ABC"が記憶された場所の先頭アドレスが入り、
文字列自体は読み込み可能な場所に配置される(書き込みできるかどうかは処理系依存)。
典型的な実装だと文字列の先頭アドレスの値はスタック上に配置されるけど、
文字列自体は別な場所にプログラム自体の実行前に展開される。
もっと正確にはローダの仕様にもよるんだが、イメージとしてはそんな感じ。

char st[] = "ABC";
char* p = st;
だと、まず最初に読み書き可能な場所に文字列ABCが展開されて、stはその場所の先頭アドレスと等しくなり、
次にpにそのアドレスがコピーされる。
典型的な実装だと文字列も文字列の先頭アドレスの値もスタック上にそのコードの実行時に配置される。

「読み書き自由な配列」を「読み込み可能な文字列」で初期化してるのか、
「読み込み可能な文字列」へのアドレスを引っ張って来てるだけかの違い。
C++相談室 part120 [転載禁止]©2ch.net
500 : ◆tAo.kQ2STk [sage]:2015/11/14(土) 16:26:49.52 ID:1e4erM+I
しょっちゅう使う関数なら自然と引数の型やその順序まで覚えてしまうものだけど、
基本的には「あれをしたい」って思った時にそのライブラリというかカテゴリの名前が分かりゃそれで十分かな。
ググれるから。

それに一つの環境で使える関数群を全部覚えたからと言って、次の仕事で使えるとは限らないしね。
前の仕事ではCreateWindowEx関数を使ってたけど
次の仕事ではgtk_window_new関数が使われてた、とか
そもそも仕事に使う言語がc++からJava Scriptに変わったとか。

ただ、標準ライブラリに何が用意されてるのか位はさらっと目を通しておいたほうがいい。
よほど特別な理由がない限り、標準的な関数やクラスを自分で実装するのは2つの理由で無駄だから。
1つ目の理由は、もちろん既にあるものを自分で実装するのが時間の無駄だってこと。
バグ取りなんかも必要だし、よっぽど腕が良くないと既存の物より高速に動作する物は作れない。
2つ目の理由は、そのコードを読んだ人に「このVariableArrayクラスはstd::vectorクラスと何が違うんだろう?」って調べる事を強要するから
他人の時間を無駄にしてしまうってこと。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。