- スクウェアの隠れた名作の「ライブ・ア・ライブ」って面白かったよな
5 : はっさく(石川県)[]:2011/01/02(日) 05:37:32.39 ID:vW5hkqML0 - だ!からー!
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
135 : はっさく(石川県)[]:2011/01/02(日) 05:44:30.04 ID:vW5hkqML0 - ポインタつって要はメモリ空間のアドレス番号格納した変数でそ?
なんでそんなアドレスをわざわざこれはintのアドレス、doubleのアドレスってってぐあいに int *a みたいにやるのかわからん。 アドレスはアドレスでいいじゃん。アドレス番号格納する数値型変数1個ユーザ側で用意して 変数名adr〜みたいな変数名にしときゃいいのに、なんで言語仕様に組み込まれてるのか誰か理由をおしえてくれ
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
138 : はっさく(石川県)[sage]:2011/01/02(日) 05:52:46.85 ID:vW5hkqML0 - >>136 そのアドレスから何バイトとってきて〇型にキャスト みたいな関数一つ用意しときゃいいじゃん。
もっともプログラミングの基本の変数にわざわざ裏表作って分かりにくくしてるだけに思える。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
145 : はっさく(石川県)[]:2011/01/02(日) 06:17:02.11 ID:vW5hkqML0 - >>142 ごめん。結構わからない。
たしかにintの配列から値を取得する場合、例えばポインタで指し示されたint型配列の5番目の数値とるのに 「アドレス+(使用環境のint型のバイト数)×5から(使用環境のint型のバイト数)バイト取得」みたいにする必要があるけど そりゃアドレス指定だから仕方ない。というかアドレスの概念なくポインタにアクセスするほうが俺は怖いんだけど。 できればレイヤーとアライメント説明してもらえないだろうか。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
148 : はっさく(石川県)[]:2011/01/02(日) 06:31:43.69 ID:vW5hkqML0 - >>147 レイヤーの意味はわかったけど、色んなプログラムでこれ結構やってるんじゃないか?
アセンブラある程度わかってて、ポインタでつまづいた俺としては、逆に型で必要なバイト数 が明示されてなく扱う事に抵抗を覚える。 アライメントなんとなくわかった。でもなんかスッキリしねぇなぁ。使用環境とC言語の仕様によって「バイト境界」 とか設定されるんであればそれをなんとかしたほうがよかったんじゃねぇのか?
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
151 : はっさく(石川県)[]:2011/01/02(日) 06:49:20.02 ID:vW5hkqML0 - >>149 たぶんchar配列の先頭ポインタでの扱いだとサイズわからんといいたいのだろうけど、
それにも俺は違和感あるねぇ。 結局¥0デリミタくるまでが変数の内容ではあるわけだけど、メモリ空間確保のためのmallocもしくは配列サイズ指定 しなきゃいけないのはどうせおなじだろ?じゃなきゃメモリ破壊をおこすよね。リードだけならいいのかもしれんが。 文字列型に文字列入れ込むためには、サイズも同様に書き込むような言語仕様にしときゃよかったんじゃないかと。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
159 : はっさく(石川県)[sage]:2011/01/02(日) 07:17:22.30 ID:vW5hkqML0 - >>153
ptr.lengthがやりたいっつーよりも、文字列格納するのに、char配列もしくはmallocでメモリ確保しなきゃなんないのなら 変数代入時にサイズとメモリ確保さくっとやっちゃえ、String型みたいなの先に用意しとけってこと。 わざわざメモリ破壊でデバグが難しくなるぐらいだったらサイズもメモリ確保も言語側の標準関数とかで対応しとかなかったんだろう? char配列を関数に受け渡して処理なんておっかなビックリすぎる 少々自分でもわけがわからなくなってきてるが。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
161 : はっさく(石川県)[sage]:2011/01/02(日) 07:24:19.41 ID:vW5hkqML0 - >>159 確保した以上の添字にアクセスするということも含まれるわけだからまぁそうか。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
163 : はっさく(石川県)[]:2011/01/02(日) 07:31:16.51 ID:vW5hkqML0 - 低級なら低級でアドレスはアドレスでいいじゃん、アクセスに必要な先頭アドレスと取得サイズはこっちで指定するから
ポインタなんて概念いらねーとかおもってしまう。 てことは先述のアライメントというものがあるためにポインタ導入しないといけなかったのかなぁ。 もう少しアライメントについて勉強してみなきゃいけないか。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
166 : はっさく(石川県)[sage]:2011/01/02(日) 07:38:25.46 ID:vW5hkqML0 - >>164 アドレスに格納されるサイズは1バイト さえ覚えておけばいいじゃん。
ポインタだとそれが4だったり6だったり8だったりするんだよ?おれはそっちのほうが嫌かなぁとか思うんだが。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
168 : はっさく(石川県)[sage]:2011/01/02(日) 07:44:58.41 ID:vW5hkqML0 - >>167 プログラムザッと眺めたときに
その変数がその型のポインタってすぐにわかればいいんだけど、 大抵の場合この型なんだったっけと定義部に戻らないとわかんないでそ。それを一つ一つ記憶しておくのが煩わしい。 bin getbin(int adr) みたいのだけでもよかったんじゃないかと。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
172 : はっさく(石川県)[sage]:2011/01/02(日) 08:27:52.74 ID:vW5hkqML0 - うーん・・。アドレス入れるためのアドレス型(WORD値)があって、変数名adr〜って名前つけておけばいいだけなきがするんだがなぁ。
環境でアドレス指定に使うWORDサイズが違ってくるんだっけ?そのへんはシステム変数でも返してくれればいいし。 ポインタで1つ先読み込むってした場合に「その指し示す型」の分だけアドレスが移動するのは本当にプログラム理解の妨げになるきがする。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
174 : はっさく(石川県)[]:2011/01/02(日) 09:00:01.51 ID:vW5hkqML0 - 結局アドレス値ならアドレス値らしく+1したら、+1番地をキチンと指し示したほうがよくね?
+1して「指し示す型」の分だけ勝手にアドレス移動すんなと。 そんなもんは配列にまかせとけと。 「+1しろよ」「+1しときましたー」「おまえ+4してるじゃないか」「int型の1つ先なんで+4番地すすめたのですが・・」 「よけいなことすんなー」ってなんか新人の社員のいらぬお節介な気がしてならない。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
183 : はっさく(石川県)[]:2011/01/02(日) 09:37:14.25 ID:vW5hkqML0 - >>177 そう。記述仕様の問題でもあるわけで。「ポインタ演算」なんて仰々しい名前つけてるけどやってることは
・「指し示す型の分×加減算された値」をアドレス指定先動かしてるだけ ・内部はアドレス値で保持 ・+1しても内部値は+1とはかぎらない なぜこんな仕様にしたのか理解に苦しむんだよ。 配列の添字上げたほうがよっぽど読みやすいし間違いも無いと思うのだが。 >>176 配列アクセスは遅いの?最近C触ってないからわすれてもうた。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
245 : はっさく(石川県)[]:2011/01/02(日) 17:19:53.43 ID:vW5hkqML0 - int ary[2]={100,200}
int *po; po = &ary[0]; po++; poが+1になるならわかるが、実際は+4されてるんだぜ?腹立つだろ。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
247 : はっさく(石川県)[sage]:2011/01/02(日) 17:23:23.31 ID:vW5hkqML0 - >>246 セミコロンぐらい追加しとけ
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
253 : はっさく(石川県)[sage]:2011/01/02(日) 17:36:12.14 ID:vW5hkqML0 - +1って書いておいて実際には+4やら+6やら不定なのが堪らなく嫌なんだよ
それやるぐらいなら配列[1][2]・・・とアクセスしたほうが全然まし。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
269 : はっさく(石川県)[sage]:2011/01/02(日) 17:53:45.28 ID:vW5hkqML0 - >>266 アセンブラのinc命令でそ
+1だとさながらmovかLDでそ
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
277 : はっさく(石川県)[sage]:2011/01/02(日) 18:00:18.73 ID:vW5hkqML0 - > x86であっても奇数アドレスに2バイト以上のデータを置いて
> レジスタに転送するとクロックが余計にかかるってペナルティあるのに そういうハード仕様の進化も糞なんだよな。 糞の上で糞たれてるようなもん。 言語仕様なんで、どんなにその上で美しいプログラムを書いたとしてもそれは糞の上の糞の上の美しい糞でしかない。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
283 : はっさく(石川県)[sage]:2011/01/02(日) 18:06:16.09 ID:vW5hkqML0 - >>281 アドレスをポインタ内部値としてつかわなくてもいいじゃん。
ちゃんとメートルで計ってつかえよ
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
290 : はっさく(石川県)[sage]:2011/01/02(日) 18:21:44.78 ID:vW5hkqML0 - >>285 10番目の駅にアクセスするとき、
int ary[0]; ary[10]にアクセスするのと int *po; po=po+10; するのと変わりないでしょう。(処理速度云々はうえで語られてたけど) わざわざ10番目という情報を抜いた上で、自分の位置をわからなくして10番目だけを指し示すだけのポインタ それも+10しても内部は+40される内部値、疑問をもたんのかね。
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
293 : はっさく(石川県)[sage]:2011/01/02(日) 18:26:09.83 ID:vW5hkqML0 - >>292
> というかいい加減あきらめろw お前はまだC言語という前世代の遺物にこだわってるのかよw
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
300 : はっさく(石川県)[sage]:2011/01/02(日) 18:41:13.56 ID:vW5hkqML0 - >>298 おっと定義がw
|
- C言語を初心者に勧める奴は馬鹿 あんな特殊用途の言語必要ねーから
303 : はっさく(石川県)[sage]:2011/01/02(日) 18:43:01.48 ID:vW5hkqML0 - >>302 わーたわーたよwすまんかったねw
|
- グルーポンの割引おせち料理が酷すぎと話題★38 社長辞任 Yahooトップにまで波及
337 : はっさく(石川県)[]:2011/01/02(日) 19:26:36.24 ID:vW5hkqML0 - 社長辞任で許すんじゃねぇだろうな?
保健所におせち持ち込むのと 制作現場写真からの衛生面も保健所に通報しとけ こんな馬鹿をのさばらせとくな
|
- グルーポンの割引おせち料理が酷すぎと話題★38 社長辞任 Yahooトップにまで波及
460 : はっさく(石川県)[]:2011/01/02(日) 19:35:11.15 ID:vW5hkqML0 - >>124 なんぞこれ?
|