1 :
仕様書無しさん:
ポインタは、オブジェクトの参照で代用できるし、
ポインタの加算は「オブジェクトの参照の配列」のインデックス変数で代用できる。
2 :
仕様書無しさん:2006/02/16(木) 19:51:28
オブジェクトの参照ってポインタそのものだよ。
3 :
仕様書無しさん:2006/02/16(木) 19:53:08
Javaでポインタが無いと思ってるならそれは大きな間違い。
とんでもねぇープログラム作ってるぜ。
つか、Cから転向した漏れが騙されてわけだが。
スレ立てたんなら、もう少しネタを出せよ。
じゃあ
>>1になりかわりましてお約束
巨乳好きへ。ボインは糞。イラネ。
立ててないよ><
勃ててないよ><
9 :
仕様書無しさん:2006/02/16(木) 21:20:06
C/C++、Delphiのような危険なポインタは排除すべきだと思います。
ポインタなんて百害あって一利なしですもんね。
参考までに危険なポインタが無い言語をあげておきますね。
Java、C#、VB、VB.NET、Perl・PHPなど各スクリプト言語
ポインタのポインタのポインタのポインタの・・・
漏れが引き継いだソース***とかたくさん使ってるのに説明が一切ないんでつけど。。。。。
変数名も意味不明だち。。。。。
配列覚えたはじめは、配列の配列の配列の・・・って
多次元配列を作ってしまうものだ。
そして、どの次元が何のデータかわけがわからなくなる。
そんなことをせずに、構造体やクラスを使えばスッキリと実装できる。
ポインタのポインタのポインタの・・・ってのも
これと同じ類のものだろうな。
あんなもん使うべきじゃないし、力がある人は使わない。
配列は3次元までだろ
言語始めたばっかりは5次元配列とか普通に使ってたからなぁ
数、縦、横、奥、属性
複数の空間があって座標ごとにいろんな値が詰まってる
ちゃんとした本すら読まず独学だったせいで
ひとつのことを覚えるとひたすら応用して使ってたよ
そもそも構造体も名前付配列だしね要素が1個文字になっただけ
まぁ、構造体覚えた後も2次元配列の中に3次元配列があってその中に・・・
なんて平気でやってたころが懐かしいw
15 :
仕様書無しさん:2006/02/16(木) 22:47:57
来月からCのプロジェクト。
オブジェクト指向覚えると、あの世界には戻りたくない。orz
16 :
仕様書無しさん:2006/02/16(木) 23:09:08
>>12 そんなことをするなら
ListのListの
もしくは二次元のキーを持つハッシュ
List<キークラス> 二次元キー = new ArrayList<キークラス>();
二次元キー.add(キーオブジェクト1);
二次元キー.add(キーオブジェクト2);
Map map = new HashMap();
map.put(二次元キー, 値);
に汁。最近の玄関の扉はキー差し込み口(鍵穴)が二つ以上
ついているだろ。
あんな感じのを想像してくれ。
C++のコメントを使うんだ!
id
20 :
仕様書無しさん:2006/02/17(金) 21:32:59
*
22 :
仕様書無しさん:2006/02/17(金) 22:43:52
文字列をだいぬーする時に使います><
.NETはポインタが無い分、Javaより進んでいる
意味ワカンネ
25 :
仕様書無しさん:2006/02/17(金) 23:32:58
>>23 . N E T
↑
└──あるじゃねえか、ここに
>>25は一生懸命矢印がずれないように書いたんだろうなあ。
ご苦労なこったなあ。
・・・・
この程度のことで苦労するような無能にはなりたくないと思った
この程度のあおりでレスするような人間にはなりたくないと思った
29 :
仕様書無しさん:2006/02/18(土) 23:35:27
Java はポインタがない分 C++よりすぐれている。
って結構多くのところで聞いた言葉だと思ったけど?
>>1 何を言っているんだお前は?頭の悪い専門学校生か工房か?
>>29 ポインタがないわけないだろマヌケ。考えなくていいだけだろ。
>>29 聞いた相手が素人でした、という可能性すら検討しないのか?
32 :
仕様書無しさん:2006/02/19(日) 04:34:20
*(char *)dat = (char)0;
こう書かないとwarningでた。ポインタって意味わかんね
33 :
仕様書無しさん:2006/02/19(日) 04:38:13
ここってプロの方が集まる場所でィィんですよね??
34 :
仕様書無しさん:2006/02/19(日) 11:05:34
35 :
仕様書無しさん:2006/02/19(日) 11:18:19
JavaとかC#みたいに中途半端に隠しているほうが危険だとおもうんだけどね。
どこが中途半端で、どこが隠しているというのか。
それがどういった理由でなぜ危険なのか、まったくかかれていない。
却下
超高級言語を最初から使った人は、ソフトウェアの仕組みをよく知らない。
っていうのは言語の問題ではなく、単に知識の問題。
知識をつけるためにC言語を勉強するのはよかろう。
しかし、仕事では使ってはいけない。
勉強のために筆算を使うが、仕事では電卓を使うのと同じ事。
>>36 素直に「どこが中途半端で、どこが隠しているの?」って質問しろよ。
お前は今、教えを乞う立場なんだから。
はなっから質問なんかしていない。
そんなもの無いから、質問しても答えは無しだとわかっている。
40 :
仕様書無しさん:2006/02/19(日) 12:08:14
>>39 まあ、あれだな。
知らなきゃ幸せだってことね。
やっぱり答えは無しのようだ。
42 :
仕様書無しさん:2006/02/19(日) 12:12:58
>>41 だから教えてほしいなら教えてください、だろ
別に教えてほしくないってw
「無し」という結論が正しいし、それで十分満足しているし。
俺はこういう結論で一向に構わん。
っつーか、
>>36は、
>>35がダメダメな主張だという事を言いたかっただけだろ。
教えて欲しい云々なんて見当違いもいいところ。
45 :
仕様書無しさん:2006/02/19(日) 16:33:42
>>44 本気で言っているならあなたも馬鹿ですね。
ポインタって何か知らない人でしょうね。
ポインターって、手元からスクリーン上のオブジェクトを指すやつだろ。
便利じゃないか。
糞みたいなポインターを使ってるプログラマーが要らないだけだろ。
ポインターすら使えないプログラマーが糞みたいだからいりません
50 :
仕様書無しさん:2006/02/19(日) 16:52:24
まぁポインタが使えなくてもできる仕事もあるのですから気落ちしないで頑張ってくださいという事でFA
ポインタの勉強するまでは参照が良くわからず、参照型の変数宣言するときにも
一々全部newしてましたorz
52 :
仕様書無しさん:2006/02/19(日) 17:22:19
ある変数に入れてるオブジェクトを別の変数にコピーするとき
VB使いでさえ普通にポインタ=参照を使っているわけで。
VBにはIntPtr、StrPtrとかあるでちょ。
はいはい。キチガイは帰っていいよ。
>>54 それは単にポインタ=参照のメモリアドレスを取得する命令に過ぎない。
VBをはじめ最近の高級言語では、ポインタを扱うときにメモリアドレスを
直接見なくてもポインタを使って出来る(間違った使い方以外の)
プログラミングができるようになっている。
メモリアドレスのインクリメントは出来ないんだけどな。
メモリアドレスは数値なんだから+1すりゃいいだけじゃん。
っていうか、そもそもなんのためにインクリメントするんだ?
オブジェクトが並んでいる=オブジェクトの配列 の中で
オブジェクトを列挙したいのなら、配列のインデックス変数を
インクリメントすればいいだけの話だし。
配列(データがどこからどこまであるか)という情報なしに、
オブジェクトのポインタを直接インクリメントできる言語は危険。
データが無いところまでアクセスして、たとえば単純なデータ参照など
場合によってはエラーが発生せずにそのまま動いてしまう。
こういう言語は使うのをやめたほうが良い。
>>59 それが必要なら付加すりゃいいじゃんよ、スマートポインタとかにして
バカじゃねぇーの
>>60 それを手動で管理するか、自動で言語環境がやってくれるかの差異は大きい。
Cでは「プログラマは神である」と言われているのは、別の言い方をすれば、
「神のごとき全能性でもって全てを管理できることを要求される」ということだ。
その辺が面倒に感じてくると、
C++のようなObjectにある程度面倒な処理を隠蔽出来る言語や、
VB、Javaのような言語側で面倒なことは概ね管理してくれる言語に流れる。
言語を換えないにしても、何らかのライブラリで細かな実装を外出しするようになる。
つまり、俺が言いたいことを一言で言うなら、
>>60 スマートポインタ出しちゃった時点で、
結局やろうとしてる方向は同じなんだから喧嘩すんなよ。もちつけ。
62 :
仕様書無しさん:2006/02/20(月) 17:10:40
>>61 俺が言いたいのはこの程度の問題で頭悩ませるアホとだけは一緒に仕事なんぞしたくねーって言いたいだけ
63 :
仕様書無しさん:2006/02/20(月) 17:22:11
あぁアレか
諸々の要素でCつかうのが最適な場合や
そもそも言語選択に自由がないのに
Cはポインタが危ないからイヤだとかごねるやつ
そういう馬鹿には触らせたくないなぁ
って結局ポインタ自体はメリットないし
>>59 「副作用を鑑みるとタミフルは危険、使いたくない」と言うのは勝手だが
「使うのを止めたほうがいい」は余計なお世話だ。
インクリメンタリズム
>>62 その程度の問題でおきた
バッファオーバーフローのバグなら、
商用、オープンソースともに数知れずなのだが。
そいつら全部アホか。おまえもえらくなったものだなw
ポインタで操作するの便利だよな
そう、
>その程度の問題でおきた
>バッファオーバーフローのバグなら、
とかいうのはお前みたいなマヌケの起こしている事だろ、こんなアホとは組みたくないという事。
Microsoftは間抜けの塊!
ひとつだけ言っておくと
スマートポインタ >>> (超えられない壁) >>> ガベコレ
だな。
73 :
仕様書無しさん:2006/02/21(火) 10:33:32
ひとつだけ言っておくと
ガベコレあるけどシンプルで使いやすいアプリ >>> (超えられない壁) >>> スマートポインタを使っているが操作もアレでバグばっかりのアプリ
だな。
>シンプルで使いやすいアプリ >>> (超えられない壁) >>> 操作もアレでバグばっかりのアプリ
これは正しい
>ガベコレあるけどシンプルで使いやすいアプリ
>スマートポインタを使っているが操作もアレでバグばっかりのアプリ
こじつけで、因果関係が無し。俗に言う故意の誘導で、バカしか引っかからない盲点が有る。
または、バカしかこのような文は書けない。
>>67 >そいつら全部アホか。
肯定だ。コード書いてて気付かない、というのが寧ろ不思議なんだが。
たしかに、メモリ64kとかの環境で組んでるとなるとガベコレは使えないからなぁ
うん、やっぱりポインタは必要だよ
通信速度じゃないんだから
携帯とかその手のもので64kは無いって
マイコンとか基盤系の話だろ
KVMのKの意味はキロバイト。
64K程度で動きます。
81 :
仕様書無しさん:2006/02/21(火) 22:27:00
>>メモリアドレスは数値なんだから+1すりゃいいだけじゃん。
めっけ、ポォインタァー理解不能者。
そうですね。配列のインデックス変数を+1するのと同じ意味ですね。
ポインタ=配列の添え字
>>77 Javaにはポインタがあるんだが。
ポインタを操るクラス、インタフェースが
揃った
java.lang.ref.Reference
java.lang.ref.Softerence
などがあるわけだが。
>>85 配列のインデックスにポインタは使うな、素直にインデクサ使え
ポインタはもっと別の重要な局面に使う
そして NullPointerException 発生
>>88 > ポインタはもっと別の重要な局面に使う
おまえの言っていることは抽象過ぎ。具体的なことを何も言っていない。
>>90 この程度で抽象的もクソもあるかマなんぞ止めて死ね
92 :
仕様書無しさん:2006/02/22(水) 12:22:41
>>85 難しくと言うかちゃんと考えるとポインタは添え字にもどる
メモリは巨大な配列
93 :
仕様書無しさん:2006/02/22(水) 13:11:47
Cのポインタはビットフィールドを指定できないから糞
ポインタはオブジェクト
配列の添え字とは違う
と思う
実装的な話をするのか
設計的な話をするのか
意味的な話をするのか
でそれぞれの意見が食い違ってる希ガス
あと、表面的なことしか見えてないのも混ざってるようだけど
>>93 >Cのポインタはビットフィールドを指定できないから糞
???
メンバ変数へのポインタを使えばそれっぽいことはできるし、本当の意味でのビットフィールドへのポインタとなると
サイズまちまち、すなわち型が違うからそもそもポイントするというのがナンセンス。
さらにエンディアンに依存するしハード超依存になってしまうよ。
ここまでくると素直にシフト使って切り出せと言いたい、大体ハードウエアとしてビットをポイントするハードなんて普通じゃない。
Cを高級アセンブラとして考えるなら関数にしておくのが実装として美しい。
98 :
仕様書無しさん:2006/02/22(水) 22:54:19
/* ポインタへのポインタは見づらいので俺は嫌い */
void matrix_add(int n, int m, double **a, double **b)
{int i, j;
for(i=0; i<n; i++)
{for(j=0; j<m; j++)
{a[i][j] += b[i][j];
}
}
}
99 :
仕様書無しさん:2006/02/22(水) 23:42:11
ここが噂の、ある程度の知識を揃えた半端の議論会??
ポインタのポインタはアドレス変更で使うけど、***は非常に迷惑でつ。
構造体にちてくり。
はいはい。無能乙。
>>94 ポインタとオブジェクトは別物だろ。
ポインタはオブジェクトをさすメモリアドレス。
メモリ空間の中でのオブジェクトの位置を指す数値。
メモリ空間全体を一つの配列と考えるとやっぱり添え字。
>>102 >ポインタはオブジェクトをさすメモリアドレス。
というのはCの仕様上、誤り。
>>103 あほけ。
ポインタはメモリの中のオブジェクトをさすもので、
式や変数やレジスタ変数には適用できないとK&Rにちゃんと書いてある。
>>104 K&R持ち出すか?普通…
ポインタは「実態を参照するための値を持つオブジェクト」。
I/Oを指しているかも知れないし、アドレスではないかも知れない。
106 :
仕様書無しさん:2006/02/24(金) 21:51:17
K&Rって・・・
そりゃC言語でのポインタの定義だろw
ボインちゃん
だから、参照もポインタだよな。VBにもあるな。
109 :
仕様書無しさん:2006/02/24(金) 22:10:50
無限ループってこわくね?
ヌル(・ω・)ポリーン
112 :
仕様書無しさん:2006/02/25(土) 01:02:04
ヌル(・ω・)ポーン
113 :
仕様書無しさん:2006/02/25(土) 09:19:56
ム板おそるべし
ム板?
マ板では?
ここはマ板
>>113のはム板
118 :
仕様書無しさん:2006/02/26(日) 15:18:55
バカ登場
↑こういう悪口だけしかいえない奴がいるから、
ますます、正論だってことになる。
真性バカ再登場
100回ぐらい声に出して繰り返して
>>113を読んでごらん
>>121 スレあげただけじゃなんの意見にもならんよ。
せめて該当レスでもださなきゃな。
>>123 読みましたがなにか?
何か言いたいことがあるのならちゃんといえよ。
人を小ばかにして逃げても、反論にはならないことを自覚せよ。
>何か言いたいことがあるのならちゃんといえよ。
>>113のスレの1-2がバカで面白かった。
正論だとか言ってる奴はバカだと思う。
「せめて該当レスでもださなきゃな。」とか言ってる奴はマヌケだと思いました。
「反論にはならないことを自覚せよ。」とか言ってる奴は反論すべき内容なんか書いてないことに気づいていないようだ。
バカでも読めるように箇条書きにしたからな。
a[b] と b[a] と *(a+b) が同じ意味になるってのは有名な話だと思うが、
これを知っていればポインタは配列のインデックスと同等の物だってわかるはずなんだが・・・。
>>125 そんなことはどうでもいいから、
バカだと思った理由を書いてくれ。
このままじゃ、おまえがバカとしか思えん。
はぁ。バカだなぁ。
ポインタは配列じゃないよ。配列のインデックスだよ。
と読まずにレス。
>>129 えー、元スレ読んで面白さが判んない奴に説明しても判んないと思うよ。
ほら。またそうやって逃げる。
説明しても・・・じゃなくて、説明できないんだろw
逃げてるってのは正しいな。
他の優しい奴に相手してもらえ。
ここまで付き合っといて、いまさらやさしい奴に相手してもらえだってw
じゃ
>>134は
>>1-2の勝利宣言ということで。
やさしくないおまえは、もうでてこなくていいよ。
晒し上げ
まるで裸の王様だな。
見えない奴がバカなんだと言っているほうが
実は説明できやしないバカだったという落ち。
裸の王様の耳はロバの耳〜
ごくろうさまです
ここは酷いインターネッツだ
ところでポインタって何ビットなんでつか。(48ビット?)
UNIXとかで int に代入とかちてるけど おかちくね。
お前どこまで無知なの?死んだら?
クイックソートの使い道すらわからないような無能らしいレスだこと
また恥かきに来たのかしら?
ポインタの中身は処理系で異なるので、普通は警告が出る
無理矢理キャストとかしてるでしょ?
とポインタサイズが32ビット固定だと思っているアホのご面々がやってきますた。。。。。。
>>144 なにが言いたいのか、説明不足なんだが、
適当に当たりをつけてレスをすると、
ポインタが無い(参照はある)言語でのクイックソートの実装方法しってる?
ポインタ無いのにどうやって実装できるのか悩むでしょ?w
基本的に今更ポインタネタで盛り上がれるのは厨房さんしかいない
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
>>147 どうやって実装しているかは知っているけど、
それ配列でも実装できるよね?
>146
当たり前のことを今更?
死んだら?
どうやら優しくない奴がまた出てきているようでw
キチガイコテに優しくする気は毛頭ねぇな
>>154 どうやら優しくない人は複数いるようで
つーかド素人はム板でじゃれてろ
むいたん(;´Д`)ハァハァ
まいたん(*´Д`)ハァハァ
このあたりが素人の限界
161 :
仕様書無しさん:2006/02/26(日) 22:47:49
ぽいんた使わなければ出来ないクイックソートってどんなのだろう・・・
そっちの方が悩むよw
クイックソートの件はキチガイコテの発言集から来ただけちゃうんか
誰かクイックソートにポインタ要るとか言ったか?
厨房の言うこといちいち気にしてたら身が持たんわな
C だからポインタを使わなきゃいけない訳じゃないし、
ガベコレとポインタが両立しない訳でもない。
Mac OS 上のC なんかはハンドル(ポインタのポインタ)と
ロック/アンロック機構で安全性を確保しておき、
アドレス直接参照とかハンドルと他の型とのキャストとか
しようとすると、コンパイラが「いいのか? 本当にいいのか?」と
しつこく言ってくるのでワーニングを消そうとすると結構念入りな
記述を強いられた。
ぶっちゃけシステムの底の底の方にアクセスするとか、
異なったアーキテクチャのマシンとデータ共有するとかいった場合は
ポインタが簡単に使えると有難くはあるのだが、普通のアプリケーション
プログラマに軽々にポインタ使わせるのは禁止したほうが(少なくとも
制限したほうが)いいと思われ。
ポインタという言葉やめて
ショートカットといえばわかりやすいのにな
>>166 ポインタを知らない人が本質無視して勝手に命名しないでね。
168 :
仕様書無しさん:2006/02/27(月) 10:17:05
その結果
リファレンス=参照にかわったがな
169 :
仕様書無しさん:2006/02/27(月) 22:08:38
ポインタがないと、違う言語で書いたものに見えてしまうのって病気?
データ構造を決めたら、ポインタで扱う方が楽だよ
その理由は?
スピードさえ拘らなければvectorとかdeque、listみたいなコンテナがいっぱいあるんでつから
アホみたいにポインタ使わなくてもOKでちょ (・∀・)
構造体の再構築は面倒くさいち。
また懲りずに無知発言ですか?
メンバ変数に直接アクセスされるの嫌い。
つ クラス
言葉責めされたいんだな
179 :
仕様書無しさん:2006/02/28(火) 19:03:31
>>174 class Man {
private:
string chinko;
public:
Man() : chinko("8cm") {}
};
int main()
{
Man ore;
string *p = (string *)&ore;
cout << *p;
}
ってこと?
自分の半分以下のchinkoサイズを見ると
憐憫の情を禁じ得ない
あああああああああああああああああああああああああ!!!!!!!!!
>>179 だからメンバ変数の値がいじられるのか!!
ポイント・オブ・ロックス
184 :
仕様書無しさん:2006/03/05(日) 16:58:53
ポインタなんざバグの温床だよな。イラネ
185 :
仕様書無しさん:2006/03/05(日) 17:42:45
バグを作るプログラマが悪い
186 :
仕様書無しさん:2006/03/05(日) 17:44:45
>>15 Cでむりやりつくればいい
めんどくさいがな
なんでもかんでも実体で処理しようとするとメモリを消費しがち。
細かな処理をしようとすると必要になるのがポインタ。
byte[4] hoge;
ulong *hage = &hoge;
*hage += 5;
という処理をJavaでどう書けばいいのか分かりません_| ̄|○||| マジデス…
煽りなしで誰か教えて下さい。
hoge[0]に5足して桁上がりするかどうか調べて、桁上がりするなら
それをhoge[1]に足して、再び桁上がりするかどうか調べてって方
法を何となく思いついたんですが、どう書いていいのか、他に書き
方はないのか、もう頭パルプンテです。・゚・(ノД`)・゚・。 ヘールプ!
言い忘れたですが最終的にbyte[]が必要なんで、byte[]→ulongした場合
は最後にulong→byte[]しないといけないです。
>>191 アンパサンドとビットシフトじゃどうにもならんの?
漏れ、頭悪いからそれくらいしか重いつかね。
>>190 そのコードはCPU依存。
リトルエンディアンかビッグエンディアンかで
意味が違ってくるわけだが。
そういうコード書かないでくれないか?
>>194 CPU依存しないコードを書いてみればわかる。
もう適当に書いとけ
int a=hoge[0]+hoge[1]*0x100+hoge[2]*0x10000+hoge[3]*0x1000000
a+= 5;
hoge[0] = a%0x100;
hoge[1] = (a%0x10000)/0x100;
hoge[2] = (a%0x1000000)/0x10000;
hoge[3] = a/0x1000000;
浅知恵ですが、こんなのじゃだめなの?
byte[4] hoge;
String str = new String(hoge);
Long hage = Long.decode(str);
また無知コテがアホっぷり晒してらっしゃる
アホという方がアホの法則発動?
アホという方がアホという方がアホの法則発動?
char addValue = 5;
for (int i = 0; i < hoge.length; i++) {
addValue = (char) (((char)hoge[i] & 0xFF) + addValue);
hoge[i] = (byte)addValue;
addValue >>= 8;
if (addValue == 0) break;
}
タルいけど加算値が小さいならbyte[]→int→byte[]するより
多分この方が速い。
て言うか、元の問題からしておかしくないか?
longが4バイトの処理系もあるのか?
>>191 javaで組み込みとかすると、
こういうめんどいことせんといかんの?
C#ならunsafeで楽に書けるのにな。
unsafe
{
fixed (byte* bytePointer = hoge)
{
uint* hage = (uint*)bytePointer;
*hage += 5;
}
}
パット見何がやりたいのかわからんか没
限界までリソース節約するときは旧式ポインタも便利だが・・・
>>204 え?どういうこと?てか、「パット見何がやりたいのかわからんか没」
ってのは
>>201に対してだよね?
>>201 >longが4バイトの処理系もあるのか?
いやおかしいのは君。
Cのshort、int、longは処理系依存。
世の中にはlongが1byteの処理系すらあるw
>>207 そーゆー規格外れな処理系 (実在するかどうか訊いてもいいか?) を
持ち出してどうしようと?
>>208 うろ覚えだが、Z80互換のCPUを搭載した1ボードマイコンKT8013
(8015だったかも?)、コンパイラは富士通製だったと思う。
処理系に依存する言語なんて明らかに糞仕様だと思われ。
>>203 コードとしては美しいけど遅い。
fixed()が結構な処理時間を食うから、ある程度複雑な処理でないと
パフォーマンス的には負だな。
また必死な高卒が暴れてるのか
>>210 値の範囲や内部表現が処理系に依存しない言語とは?
金銀Perlプレゼント
>>214 「処理系に依存しない」以外のすべてが糞仕様なものを持ち出されても
困りますよう。
だがそれがいい。
218 :
仕様書無しさん:2006/03/18(土) 20:29:30
いつまでも上達しない奴には、一度で良いからこうしてやりたい。
(*`3´)・:∴・:∴ペッ
219 :
仕様書無しさん:2006/03/19(日) 21:53:16
LSI-C86試食版がデフォな俺にとって、GUIコンポーネントのプログラミングには関数ポインタが欠かせない訳だが・・・
ああ?俺? プログラマなんかじゃないよ。
今、液晶パネルのコネクタをはんだづけしてる。
CPUはV30コアのやつだ。
あー もうクラスとポインタがないとプログラムできねーな
VBなんて、なにこれ?みたいな感じだったし
アセンブラでも勉強するべか
Cだけでコーディングするとクラスのありがたみが良く分かる。
CでWin32アプリを書いたあと、C++に切り替えると「ナンジャコレ!」という位簡単に思える。
222 :
仕様書無しさん:2006/03/23(木) 00:06:10
VB6の
long 4バイト(32Bit)
integer 2バイト
困った経験ありますw
Cの
int int32
long int32
困った経験がありますw
つーかなんで同じサイズで名前違いが2つもあるねん
昔はintと言えばint16だとすぐに連想できたんだがな('A`)
じゃあ、全部 BYTE* 型でアクセスするかw
>>223 int型だけ環境依存だからね。嫌ならint型だけは使わないって選択もあるよ。
short <= int <= longだから環境依存が激しいし。
マクロでCHAR・WORD・DWORDあたりににしておいた方がいいと思われ。
>>226 64bit環境だと、
long = 4byte
int = 8byte
になるのでは
ローカル
インディアンの都市
ポイント・オブ・ロックス
231 :
仕様書無しさん:2006/04/09(日) 08:52:49
レベルの差がすさまじいスレだな。ここは。
232 :
仕様書無しさん:2006/04/09(日) 23:20:45
>>223 どうしてもというならGCCで
#define long long long
と定義しとけばintとの使い分けができるが。
まぁ、標準関数にポインタ渡す時に困るだろうな。
もう、既出かも知れんがポインタ無しでどうやって絶対番地を指すつもりなんだろうか。まさか、VRAM等を知らん分けは無かろう。
ポインタ演算最高
できるだけ早く動くものをつくれ、移植性など気にするな(Cの精神、だっけ?)
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
237 :
仕様書無しさん:2006/04/13(木) 06:16:39
いまどきVRAMにアドレス指定で直接書き込むことなんて
めったにないだろ。
239 :
ダマレゴゾウ ◆KGRPbmh5.Q :2006/04/13(木) 20:04:46
おっぱい! おっぱい!
おっぱい おっぱい! おっぱい!
おっぱい! ∩ ∩ ノ) おっぱい!
おっぱい! 川 ∩ 川彡'三つ おっぱい!
おっぱい! ⊂ミ∩∧η∧∩彡⊃ おっぱい!
おっぱい!⊂三ミ (,,・Д・)彡三彡三⊃ おっぱい!
おっぱい! ⊂彡川⊂彡川ミ⊃ おっぱい!<ポインタ=乳首
おっぱい!⊂彡川∪⊃ U川彡⊃ おっぱい! ポインタ=クリトリス
おっぱい! (ノ ∪ 川 ∪ミ) おっぱい! これがポインタ濡れ濡れのエロスだぞ!
おっぱい! ∪ おっぱい!
おっぱい! おっぱい! おっぱい!
おっぱい! おっぱい!
240 :
仕様書無しさん:2006/04/13(木) 20:32:13
>>298 VRAMは単なる例だろ。
今時、携帯電話やらデジタル家電なんかの規模でアセンブラだとキツイだろ。
だから、C/C++でポインタ直下打ちするこたぁ結構あんだよ。
>239
氏ね
>>240 Javaでファイナルファンタジーが動いているこの時代に?
244 :
仕様書無しさん:2006/04/13(木) 21:24:05
>>243 せめてファイナルファンタジー7ぐらいは作ってくれんか?
だがファイナルファンタジーはスーファミ版が一番面白い。
>>243 面白かったか?それは良かった。
で、それとコレとが何の関係があるんだね?
アプリなんざVBでもできる。
それから、その下のVM、OS、BIOS、ファーム、デバドラ…。日々進歩を求められるこれ等も直打ちが必要だが?
誰も屑の感想なんか聞いてねぇよ
空気読め屑
実はな、ここはゴミ箱なんだよ、
でさ、
>>247 お前自分のことゴミじゃないと思ってやしないか?
ああそうだ、お前に言われる前に言っておく、
実 は 俺 は ゴ ミ な ん だ よ
糞コテに言ってるんだと思うよ
>>240 「単なる例」で VRAM 持ち出す辺り、加齢臭がします。
I/O とか言っとけ
>>233
251 :
246:2006/04/14(金) 21:27:02
253 :
仕様書無しさん:2006/04/15(土) 18:02:34
静かだな。まぁJava厨なんてその程度か。
254 :
仕様書無しさん:2006/04/17(月) 22:22:50
戻り値としてポインタ指定しないとエラーで絶対コンパイル出来ない時はしょーがなく&使ってるぐらい。
アドレス指定すると後はAPIがうまい事値を仕込んでくれるんだなあと
そんな程度の認識れす。内部でどんな動作してるかはしらん
255 :
仕様書無しさん:2006/04/17(月) 23:11:49
無能! m9(`A') ズビシッ
>>255 そうだなあーwコキ使われたくないんで働きたくねえよ
寝てても金が入ってくる仕事キボンヌ
命が出て行きそうだがなw
今日、malloc、freeを使ってたcソースをコンテナクラス使用に置き換えてみた。
ウンコポインタを無くちたお蔭でソースが少しだけ見やすくなった (・∀・)
でもまだ1ツールだけな il||li _| ̄|○ il||li
手際の悪さ自慢ですか?
流石アホコテ
261 :
仕様書無しさん:2006/05/07(日) 18:09:36
>>259 多分、その仕事、
70% 位やったあたりで、
もっと良い方法が見つかると思う。
263 :
仕様書無しさん:2006/05/28(日) 08:32:45
何年やってもポインタをまともに使えない奴って
なしてクビにならないの?
ポインタ使うと速い
ずっとキーボード打ってて
脳が呆けた頃に なんかやらかす、こともある
266 :
仕様書無しさん:2006/06/05(月) 11:48:08
// 楽しい花火大会の日です。盛り上げましょう
a* * *b
*a **b
**a *b
**a * b*
267 :
仕様書無しさん:2006/06/05(月) 11:52:40
a* * *b**b**b**a ***b**a ***a**a**b**a ***a * b*
*b**a ***a*a* * *b**b**b**a ***a**b**a **a * b*
a* * *b**b**b**a ***b**a ***a**a**b**a ***a * b*
*b**a ***a*a* * *b**b**b**a **
a* * *b**b**b**a ***b**a ***a**a**b**a ***a * b*
*b**a ***a*a* * *b**b**b**a **
[゚д゚] デフラグガカンリョウシマシタ
/[_]ヽ
| |
*********************************************************************************************
*******************************************************************//aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb。いうげししすでのまょり火花会楽上盛大日
269 :
仕様書無しさん:2006/06/05(月) 22:20:54
ポインタ使って花火大会のコードを仕事上にしてしまうのはマジで
やらないで欲しい。趣味の領域なら良いと思うが。
a.b.c.d
みたいな複雑な構造体をガンガン使う場合
p=&a.b.c
としておいて
p->d
p->e
みたいな書き方をよくする。
>>271 別に速度アップ目指してる訳じゃねーんだけど?
ヒント言いたいだけのヒント厨はスルーしとけ
>>270 そのような状況は論理構造とデータ構造の不整合を意味しているぞw
どうでもいいが、高速化以外の目的で
>>270みたいな書き方するのはどうかと思うよ。
別に a.b.c.d = a.b.c.c; とか書けば良いじゃん。コード書く時間が短縮とか思ってんのかな?
エディタに置換とか付いてるの知らないのかな?
そうとも限らないんじゃないの。
単に名前付けのために階層きられてるんだったらフル修飾のほうが好みだけど、
階層毎に意味付けされている場合だったら個別に切り出しても違和感ないかな。
それって設計ミス?
つうか、きちんとクラス分けしてりゃ、そんな深いデータ構造なんか扱わないからねぇ。
主にこんな使い方。
p=&a.b.c[n];
んで、各タグ名称がなげーのでコードを見易くするのが目的。
構造体3階層くらい普通に使うけどな。ってC++じゃないのでごめんね。
>>278 俺もたまにやる。VB だと With に近い用法。
まあ極力似非クラスに分割するようにしてるんで
出番はあまりないんだが。
280 :
仕様書無しさん:2006/06/10(土) 01:19:08
ポインタの作り方教えてください
281 :
仕様書無しさん:2006/06/10(土) 09:57:06
ポインタはなるべく使わないようにするべき。バグの温床になる。
あくまで最終手段だと認識して使え。
282 :
仕様書無しさん:2006/06/10(土) 10:16:38
なるべくポインタ使いたくないという心情は解るけど、
最終手段と言い切るのはちょっと違うと思うんだよね。
unix cで文字列扱う場合char型の配列使ったりするわけで、
そうするとポインタ扱うケースも多々出てくるよ。
ポインタであることをあまり表に出さないようなコーディングがいいと思うが。
ポインタ至上主義で見苦しいコード書く奴がいるのが問題。
>>264 今やその話は幻想だ
>>266-267 ワラタ
アセンブラをやれ
スレを読まずにカキコ。
このスレの90%の人は参照はポインタの機能限定版でなぜ機能を限定する必要があるのか理解していないはずだ
286 :
仕様書無しさん:2006/06/10(土) 13:06:32
>>285 おまいがどこの誰だかまったく知らずにカキコ
おまいのC言語の理解は10%未満のはずだ。いや、そうに決まってる。
アホは放置で
このスレッドは
ポインタがプログラミングの一般概念であると思い込む C 初心者
ポインタと言うと C のそれしか思いつかない C 厨
と、ご覧のスポンサーがお送りします。
誰もが認めるアホコテが何かほざいてるんだが
これは自分をスルーしてくれってアピール?
>>288 C言語の前身BCPL、B言語のときにポインタがなかったということを聞いたらたぶんファビョるんだろうな
>>291 ポインタという概念が後付の概念だという証拠だからです
ポインタってのはそもそも暗黙で使われてたアドレスを
明示的に使うことによって高速化および構造化に利用した物
その一方コーディング面から見た場合コレを使用することによって
直接機械参照を行うためC言語などは高級言語になり切れない低級言語といわざるを得ない
また、直接アドレスを参照するためオーバーフロー等によるメモリ破壊が可能であるなど危険が多かった
そのため現在では参照という形で高速化および構造化を維持しつつ
その扱いに制限をかけ安全に取り扱おうとする手法が主流となっている
また制限の中で隠蔽することにより機械部品を直接意識することなく使えるようになった
だけどここ最近の新人には動作原理も知ろうとしない奴が増えたよな
自分たちの作ったものがどう動くのか知るだけでよりよい方向に進めるはずなんだが・・・
>>293 動作原理を知ったりするのにはいいんだけどね
でもOOだとか他にも覚えなきゃいけないことはいっぱいある
C言語だけに引きこもってもらわれても困るよ
基礎も教えずにOOを覚えさせようとするわけか。
OO教えるのは有意義。
ポインタ教えてもあんまり意味がない。
そりゃそうだ
そういう開発環境をつくったからな
OO覚える前に構造化覚えてください
>>298 いや、俺はOOの歴史・起源として構造化は覚えればいいと思う
だから後回しでもいい
そんなふうに表現すると構造化がOOの起源みたいに聞こえる。
構造化の限界が認識されつつある中で、OOPが再発見された
というのが歴史的な事実だろ
OOPやってれば、構造化なんて教えるまでもないと思うぞ?
>>300 起源というのはおかしいな
OOの前パラダイムとして構造化が存在した。
ただ、OOに構造化の経験の多くが引き継がれたのも事実だと思う
>>301 いちおうC言語が完全に死滅したわけではないからC言語を触る限りは必要だと思う
>>298に同意かな。
覚えなくても自然にできる人はできるだろうけど、
メソッド単位の実装が果てしなくタコということがあるからね。
304 :
仕様書無しさん:2006/06/12(月) 12:53:33
>>267 このコードをコンパイルして何が吐き出されるのか、
個人的に興味があるが、恐ろしくて出来ない。
そんな柔なOSあるの?
307 :
仕様書無しさん:2006/06/12(月) 20:36:10
関数ポインタって便利だな。
あと、ポインタの方が処理速いっぽいので使う所存。
そんな私はOSも載ってないような組込みソフト屋さん。
308 :
おじゃばさま:2006/06/12(月) 21:32:20
ポインタを使いこなす必要はないが、「実体」か「参照」かの把握は必要だ。
それはJavaでも同じことだ。
>>308 Java使いならプリミティブという単語を使うはずだが・・・
311 :
組み込み屋:2006/06/13(火) 01:37:07
みんな、Javaとか普通に使える環境なんだね。
うらやますぃな。
Cでソース書いても、アセンブラでデバッグするとか
C++のコンパイラにはバグだらけな環境ですな。
引数の数とかスタックとかが制限されてる環境ではオブジェクト
そのまま渡せないから(スタックあふれる)ポインタは結構つかうねぇ。
ポインタのポインタとかには滅多にしないように気をつけるけどね。
>>311 そういう環境がソフト業界全体でどれくらいを占めるか、また今後増えていくのか減っていくのかを考えなければいけない。
日経システム構築なんか見れば分かると思うけどもうすでに現場レベルでJavaの拡張性の高さが認識されちゃっている
すぐにということはないが10年スパンでみればそういう環境が減っていくのは明らかだよね
既にシステムが動いちゃっているCOBOLなんかはなかなかやめられないけどそういった環境は移り変わりも早いと思う
>>311 >C++のコンパイラにはバグだらけな環境ですな。
愚痴かいな。
>オブジェクトそのまま渡せないから
制限の緩い環境だとしても、インスタンスを
現物で渡すようなマネは普通しないもんだが。
314 :
おじゃばさま:2006/06/13(火) 12:29:30
>311
ノートパソコン買って、JDKとEclipseを入れれば誰でも使える。
金が無ければ、中古パソコンにLinuxとJDK入れればいい。
全て無料で揃うJavaの世界へようこそ。
「ポインタ厨糞」→Java等、比較的安全なポインタに慣れきった人
一般に安全性が高く、メモリ管理もほぼ自動なので楽
抜け道、裏技が無い分コードの管理もやりやすい
「ポインタマンセー」→C/C++等、メモリ管理の何たるかを理解する人
ポインタ自体は非常に危険で、メモリ管理も基本は手動
しかし、工夫次第では、非常に便利な為、開発速度、実行効率は一段上。
ただし、工夫を凝らす→裏技等が増えるため、
腕が悪いとコードがスパゲティ化する。
加えていえば、後者の人はほぼ全ての場合前者の言語も使える。
実際に使う使わないは置いといて、先ずは勉強汁Java厨。
かくいう漏れはJava→C++→C#
>>315 >Java等、比較的安全なポインタに
莫迦じゃね?
>>316 何処がどう莫迦なのか説明plz
まさか説明できないのに言ってるワケじゃぁないよな?
Java厨クォリティかも知れませんぜ
>>317 一般的な概念としての「ポインタ」という用語がない以上、
(その多くは、所謂「参照」の特殊形だが)
言語仕様にポインタのない Java を例に出すのは誤り。
まして、安全もクソもない。
んじゃ適時「直アドレス」に読み替えるのがよいかと
>>315 C/C++、C#、Java全部使えるがポインタの危険性を訴えている俺はどうなるんですか?
>>315 というか考え方が甘い。別にポインタを排除しようという考え方はOO以外にも関数型言語の世界にもある。
というかむしろ関数型のほうがバグに対する考え方はがちがちなので
大学できっちりと関数型まで勉強してたらその3言語を知っていてもC/C++には批判的になる。
絶滅するわけじゃないさ
アセンブラだってまだまだ生きているじゃないか
>>323 死滅するわけではない。ただしニッチになることは確実。
まず真っ先に失われるのは携帯市場、次がゲーム市場だろう。
326 :
仕様書無しさん:2006/06/15(木) 08:39:25
ゲーム市場でまだアセンブラ使う機会があるのか?
現存するコンシュマー機は全部C
ただPSなんかはかなり専用に拡張されてるが
>>327 いや、今度の新機種で打ち止めだと思うんですよ。
SPECからしてPS3なんかは過剰だからCPUパワーを気にする必要がなくなる
現状でもPCだと処理速度はGPU次第でCPUパワーが飽和しちゃっているからね
それより先にC言語盛衰の天王山として携帯のJava vs BREWがあるけどね
330 :
仕様書無しさん:2006/06/16(金) 01:49:47
配列とか構造体とかオブジェクトとははポインタを知って理解が深まったよ。
ああ、ホントに値ってメモリ上にあるんだねってさ
>>328 今言われているBREWの欠点はほぼ全てがC言語の言語仕様から来るものだが?
これほど純粋に言語仕様の差が出る勝負もないぞ
332 :
331:2006/06/16(金) 06:21:50
×328
○329
>>331 OSもCPUも違う。各メーカでポーティング方法も違う。各キャリアの施策も違う。どこがいい勝負なんだか。
それに、Brewの盛衰とC言語の盛衰は関係ない。ポインタの必要性の議論にはなっていない。
>>333 それだけ違っていても言語の基本仕様の違いを隠し通せなかった。それが重要
そしてそれがC言語の今後を占う重要なターニングポイントになる
で、C言語の言語仕様のかなり重要な位置を占めているのがポインタなんだよね
全てではないがかなりウェイトが大きい
335 :
仕様書無しさん:2006/06/16(金) 09:09:48
>>334どういう意味で隠し通すを使ってるの?
どっちの言語仕様も開示されてるジャマイカ
BREWの問題は言語以前の問題だと思うが
BREWはQualcommによる糞仕様と各電話機メーカによる糞機種依存と
KDDIによる糞運用、それぞれ一個だけならまだ耐えられるかもしれないものが
三つ合わさることにより絶妙な腐臭を漂わせている。
338 :
仕様書無しさん:2006/06/16(金) 16:32:12
Cで書く場合、みんな移植性をどこまで気にする?
なにも考えず文字列の処理でアドレスの引き算の値を int に代入ちていまつが
エンディアン変換だけ注意する。
あぼーん
こういうスレがここまで延びてるとはw
最近はマイナーな石のプアなCコンパイラを触る奴も少ないんだろうなぁ。
移植性って......
それを意識しなければ移植性が高くならないというのは
プログラミングに問題有りといわれても仕方のないことだと思うぞ
344 :
仕様書無しさん:2006/06/22(木) 23:18:37
なにこのLSIC-86のバグ
「 関数へのnearポインタをfarポインタにキャストすると、CSレジスタのかわりにDSレジスタを使ってしまう場合があります。」
ラージモデルで関数ポインタ使えないと関数のオーバーロード出来ないじゃん。
なんでGUIアプリがクラッシュするか分かんねーとおもたが。
・・・・・死ね
LSIC-86なつかし
346 :
仕様書無しさん:2006/06/22(木) 23:43:13
移植性なんか考えるより、分かりやすいプログラムをこころがけよ
347 :
344:2006/06/23(金) 04:00:11
たまに16ビットアプリ作るとこれだ、インテルアーキテクチャうんこだなorz
結局関数ポインタのオーバーロード部分は全部汗になった。
300回位死んでくれ、もう移植性なんぞかけらもない(泣
JAVAなんて死滅すればいいのに(´・ω・`)
オーバーロード部分を汗で作った共通ルーチンで呼ぶだけじゃないの?
プラグイン/プラグアウトなんてOSにまかせろよ
ってDOSじゃ無理か
351 :
仕様書無しさん:2006/06/24(土) 01:15:44
ふぁーね?さぁーね?ふぁーね?
試食犯で回天だよきっと
354 :
仕様書無しさん:2006/07/29(土) 17:08:22
ポインタについての結論はどうなった?
355 :
仕様書無しさん:2006/07/29(土) 22:14:48
何年やってもポインタの使い方がマスターできない奴がいるという
のが結論?
別にオブジェクト指向なら
できない人はやんなくてもいいよ 必要なら誰かがオブラートにくるんで使わせればいい
コンテナクラスを使えば文字列操作も構造体の拡張もポインタを使わなくてすむでちょ。
で?
359 :
仕様書無しさん:2006/07/30(日) 22:15:12
ポインタ使えない奴って「産業廃棄物」と表現するとマズイの?
クラスってのがそもそもポインタのラッパーだからな・・・
362 :
仕様書無しさん:2006/08/12(土) 22:43:13
363 :
仕様書無しさん:2006/08/13(日) 08:05:34
364 :
仕様書無しさん:2006/08/13(日) 08:07:16
365 :
仕様書無しさん:2006/08/13(日) 08:12:33
まあ、ポインタイラネとか言っても、C言語で書くときは使えなきゃ話になんないだろ。
いやなら自分で言語処理系作って世界中に布教しろよ。
>>365 前半同意、後半は…プログラム初心者みたいな臭いがしてひいた。
なんでJavaのプログラムをC(それもDOS用)に移植すると速くなるんだ?
メモリ使用量は一桁違うし
DOSを使ったほうが遅いって考えるほうがどうかちてるでちょ。。。。。。。。。。。。。。。。
ファビョーン
ファビョーン
371 :
仕様書無しさん:2006/09/06(水) 09:00:42
DOSに移植するなんていう仕事。まだ残っていたのか。
ポインタ使えなんだら、メモリマップドI/Oどうやって制御するんよ。
>>372 言語や処理系によるが
・コンパイラディレクティブ
・リンカオプション
いくらでも手はある。
ヒント:ライブラリ化
377 :
仕様書無しさん:2006/11/22(水) 15:18:39
>高速な実行と高い堅牢性を要求されるシステム → C/C++
高い堅牢性を要求される用途にC/C++だぁ?バカだろ、これ書いた椰子
379 :
仕様書無しさん:2006/11/22(水) 18:41:33
アクセス違反とか例外エラーとか出しまくって、他にまで迷惑かける
クソなものが多いからな、C/C++製は。
他に迷惑をかけるほど酷いプログラム&プログラマなのか
>>379 それは、プログラマが糞だろ。
って言いたいところだけど、実際、これ程バッファオーバーフロー脆弱性が多いとなぁ。
D言語(笑)
気をつけたって、出るからね
確実に
STLのお陰で最近はnewとかdeleteしないち、もう出ないでちょ。
お前は自分の存在を delete しろ
>>381 >これ程バッファオーバーフロー脆弱性が多いとなぁ。
それも結局、コード書いた奴が糞だからだろうに。
そういうものを作りこみやすいかどうか、言語や開発環境がカバー
してくれるかどうか、そのあたりがポイント。
んじゃ、VB.NETが最適解で。
ポインタがいらないって……
javaやrubyはポインタがないんじゃなくて、全部ポインタなんだよ。
参照型とかなんとか言ってるが、ありゃあポインタだ。
( ´∀`)<Null Pointer Exception
392 :
仕様書無しさん:2007/01/31(水) 08:49:07
*bug * *mybug
393 :
仕様書無しさん:2007/01/31(水) 11:20:58
NullReferenceExpection
※いしのなかにいる!※
396 :
仕様書無しさん:2007/03/02(金) 12:15:32
ポインタ厨ってどんなやつだよw
398 :
仕様書無しさん:2007/03/02(金) 20:09:11
C使うならポインタ使わないと
ノートPCにタッチパッドなんかいらねえぜ!マウスでいいじゃん!
(という理由で)タッチパッドは糞!
なーんてことを言う様な、物事を表面的にしか理解できない頭の構造の奴なんだろうな・・・・・・
>>1
(Cの)ポインタの何がいいって、「無効」や「未初期化」を別の変数を使わないで表現できるのが便利。
あ、Javaの参照型もnullとか使えるんだっけ?
やっぱポインタはステキねん。
呼びましたか?フフフフフフフフフフフフフ
呼んでないから帰っていいよフフフフフフフフ
文字列初期化しろよフフフフフフフフフフフフフフフフフフフフフフ
ここもフフフフスレに・・・フフフフフ
405 :
仕様書無しさん:2007/05/28(月) 11:17:47
現場* * *上司
*バグ *部下 *
構造体のポインタのポインタをインクリメントしたアドレスを
構造体の自分参照用にとっておいてだな
その先のポインタを間接参照で次の構造体を取り出して
そこにある関数ポインタをさらに別の構造体のポインタに格納して
そのポインタをNewしてッガ!するとバグができあがるのは何故??
>>406 アクセス権違反。
struct A { void (*F)(); };
A **ppR, **ppA = new A*[3];
delete[] new A(*(*(ppA+2)=reinterpret_cast<A*>(&(A&)(*(*(ppR=ppA+1))).F)));
一生懸命複雑そうに語ってるけど
>インクリメントした
って、配列でもないポインタをインクリメントしちゃあダメだろ
VB.NETはポインタあるだろ
フレームワークの側に
>>174 それってクラスの最初がstring chinko;のアドレスな保障ってあるの?
411 :
仕様書無しさん:2007/07/11(水) 07:28:06
アセンブラ先にやった漏れからすればポインタなんてただのアドレス指定
412 :
仕様書無しさん:2007/07/11(水) 16:29:07
上に同じ
413 :
仕様書無しさん:2007/07/12(木) 00:55:41
ポインタを理解できん
ってヤシは所詮PGには向いてないのよ
せいぜいセールスエンジニアでホラ吹くのがお似合いだ
メジャーな中では最も抽象化が進んでいるjavaやC#やVB.NETを使うにしても概念的には知っていたほうが良いからな
さらに抽象になったら要らなくなるのかも知れん。あくまで、その抽象な言語を使っている限りは。
415 :
仕様書無しさん:2007/08/11(土) 10:01:20
int a, *p, **pp ;
何でこんなレベル低すぎるスレがつづいてるんですか?
お前のレベルに合わせてるんだよ
418 :
仕様書無しさん:2007/08/11(土) 18:00:20
ポインタって早い話がアドレス計算とアドレス指定だろ?
コンピュータでの基礎じゃん。
むかちの日本の和算からの伝統で、応用のみ必要で基礎など必要ないのでつ (`・ω・´) シャキーン
オブジェクトが分かればOK
>>419 破棄オブジェクトは黙ってGCに回収されてろ
なにこのアホコテ
>>1ってポインタが理解できなかっただけだよね。
スレを立てて一年以上たってるけど、もうマスターしたのかな?
423 :
仕様書無しさん:2007/08/11(土) 22:57:31
>>422 理解できない人間には、一生理解できない。それがポインタ。
424 :
仕様書無しさん:2007/08/11(土) 23:53:30
>>423 つーか、ポインタ理解できないって、思考能力は絶望的だろ・・・。
このスレは
「なんだ、
>>1はポインタも理解できないのか。w」
と、駆け出しの下っ端PGでも優越感に浸ることのできる場を
提供するためのスレです。
ポインタがどういうものか理解できないっていうのが理解できない。
427 :
仕様書無しさん:2007/08/12(日) 01:51:29
>>426 大学時代いた。
ポインタの有用性がわからないならともかく、ポインタの意味がわからないとか、使い方がわからないってのがリアルにいた。
JAVA,C#の参照変数とC++ポインタの大きな違いは
アドレスが隠蔽されたことと
->記号を廃止して.記号に統一されてること
C++のポインタはゴミ
Perl使ったことないからシラネ
つか、ポインタがわからないって感覚がすでにわからない俺だけどw
ポインタ使わないでインスタンスの管理ってできんのか?
例えば、javaなんかだとインスタンスを1つに絞るのに結構苦労する
ちょっと書き方間違えただけでいらんもんが複製されちまって面倒なんだけど・・・
文字列や領域をあんま意識しないで追加したり削除したりできるけど
裏ではそれをするたびに領域の全確保、開放が行われて
酷いときにはそれで動かなくなっちまう
>>431 ??よく意味がわからない。
immutableなオブジェクトにするためや、自分のデータオブジェクトを保護するために
裏でライブラリによってcloneされまくって困るってお話?
それとも数度のStringの足し算程度のメモリ消費量を考えるお話?
それともプリミティブ型程度のメモリが気になるお話?
>>432 全部ひっくるめて同じ問題だと俺は思うんだけどどうよ?
単に裏でcloneされるような便利なオブジェクト使わなければいいだけじゃない?
例えば便利なstringつかわないでchar配列で文字列表現すればC++と同じ土俵で戦えるでしょ
ていうか、ポインタ自体理解できれば便利な道具であるはずなのに
ちょっとした手間惜しんで言語仕様意味不明にしすぎなんではないかと・・・
インスタンスとそれを指すものって簡単には理解できんもんだろか?
初心者がぶち当たる壁ってそんなところじゃない気がするんだが・・・
>>434 別にできるできないの話をしてるわけじゃなくて
ポインタが誰かにとって難解だと思ってる誰かが便利だと思って作ったもんの大半が
全然便利じゃない上にわけわからんことになってる現状にがっかり・・・
javaってその典型みたいな言語なんだよね
ちょっと失敗してるよなぁ・・・って思う言語
test
Cとかで開発しなければならないような小規模な組み込みの場合とか、
アセンブラ開発の時にはポインタ(つーかアドレッシング)とか使えないと
厳しいですね。
理解できないよりは理解出来たほうがいいですね。
>>438 まてよ
そうじゃないから喧嘩になるんだろ?
例えば、気軽に文字列の領域が+1になるようなコード組んだとして
その文字列が2MBとかその程度だったとしてもどんなに速いCPUだって
すげー遅くなるぞ
これを理解するにはインスタンスとポインタを理解しなければならない
って偉そうに言ったけどめちゃくちゃ簡単なんだけどさ
この程度の問題ってさ、何を作るにも出てくる問題じゃね?
理解できること前提で言語仕様作ったほうがいいと思うんだけど?
STLの存在知らんかった時に自作の文字列クラス作りまちたが、今考えるとアホなことちたな。。。。。。
機能がショボイ分、スピードは速かったでつが。。。。。。。。。。
アドレス演算とかポインタポインタばっかりだとメンテが出来んち、疲れるからポインタイラネ。
>>440 そのSTLだってインスタンス本体の増減を管理させると速度は
糞レベル(アプリの実行に問題になるレベル)だが
ポインタをVectorでもたせれば色んなこと考えなくて済むじゃねーか
>>441 だから・破棄オブジェクトを参照するな。
例外出るぞ?
>>442 じゃあ、STLのListで内容ポインタで
C#のジェネリックと比べたら
C++のSTLなんてゴミだよ?
C#がどんなに優れていようとも、M$の物って時点で
ド田舎の方言みたいで、覚える気がないっす。
って人多くないですか?特にM$の仕事を沢山してきた人は・・・
むしろJAVAはSUNの物って時点で
ど田舎の方言みたいで、覚える気がしないっす。
ごめん。やっぱりSunの方が洗練されていると思う。
Eclipse使った後にVS使うとキレそう
NetBeansがスキ。
EclipseとNetBeansの重さはなんとかならんのか?
つか、なんでこんなただのIDEが強烈に重いの?って
理由はもろに
>>439だろ?
コマンドラインでの開発へみんなで戻ろう。
452 :
仕様書無しさん:2007/08/15(水) 22:07:54
453 :
仕様書無しさん:2007/08/15(水) 23:27:49
>>445 といいつつ
つかえるのは
jaば
のみ
C/C++での開発経験はありません・www
>>453 文面から考えてC/C++ぐらいやっているだろ。C#が出る前のVCで。
書かれている事以上の文脈を汲み取れない人の事を『モヒカン族』と言うらしい。
一見揚げ足取りをして挑発しているようだけど、実は行間を読めてないだけで悪意がないと言うことだ。
456 :
仕様書無しさん:2007/08/16(木) 11:02:44
*a
*(a+1)
*a * *b
a*
Javaが分かる奴ならCとかC++とか余裕だろ。
Javaしか知らん奴にC/C++は無理だべ
C++ っていってもMFCとか絡むと別物じゃないか
進化の過程から考えればC>C++>JAVAなんだから難しくはないな。
C#は突然変異で生まれた短命な種族。J#と一緒に永眠してください。
>>457 C→C++→Javaは余裕
しかし
逆は必ずしもなりたたない。
>>461 そだな。
俺はアセンブラ>C>C++>JAVAだから便利な所を享受できて幸せ。
463 :
仕様書無しさん:2007/08/17(金) 04:56:56
ポインタなんてただのアドレス指定じゃん
漏れの場合アセンブラを先にやったから
なんであれが理解できないのかわからん
>>463 想像力のない奴め、教えてやるよ。
それは、ポインタという形にしてアドレスを意識しなくてもプログラミングできるようになったから
C以降にプログラマになった奴はアドレスを意識する必要性に迫られなかったからだ。
覚える必要がないから覚えなかった。だから理解できなかった。そういうことだ。
>>464 知識不足なやつめ。教えてやるよ。
C以降っていったら、Cも含まれるわけだが、で、そのCにはアドレス演算子があるぞ。
大規模なゲーム開発の大半はまだまだCやC++が主力だよな。
>>465 だから君は想像力がないっていってるんだよ。
ああ、アドレス演算子あるよね。
でもアドレス演算子を知らないとCプログラムが組めないのか?
そんなことないだろ。
だから、Cから始めた奴が誰しもアドレスの概念を持っているとは限らないんだよ。
で、次にお前はアドレスの概念を理解できていないととどうにもならない例外を持ち出してくるだろう。
だが、それは所詮例外なのだとあらかじめ言っておこう。
468 :
仕様書無しさん:2007/08/17(金) 21:04:39
>>467 だから「以降」ってかいちゃっただけでしょ?
言葉間違えたって言えばいいのに
そこまで正当化する意味がわからないw
>>466 大規模ゲームも今や、コア中のコア部分をC/C++で作れば
あとはそいつに食わせるデータを作るスクリプティングシステムや
オーサリングシステムの仕事が中心。
コア部分をデバイスドライバやOSカーネルと捉えれば、普通の
ソフトウェア階層モデルと大差無いな。
>>467 >でもアドレス演算子を知らないとCプログラムが組めないのか?
まあマトモなもんは書けないだろうね。
// 「プログラムを “組む”」と表記する奴のサンプルが増えた。
因みに、マになったのがC以前か以降かなど
ま っ た く 関 係 な い
たとえばscanfってのを入門学習で使うじゃない。(それぐらいしか用途ないけど)
なぜprintfと違って「&」つけるのか、ってのを最初の学習時点ではオマジナイ的にしか捉えられず、
ポインタの概念学んだあとにようやく意味が分かる、ってのがCの基本的な道筋だろう
そういうの経ないのかな
間接参照の構文なんて&演算子だろうがaddressof()だろうが別になんでもいいわけですよ
どうせポインタいらないっていってる人も間接参照やコピーのセマンティックは知ってるだろうし
使ってるだろう
473 :
仕様書無しさん:2007/08/17(金) 21:50:37
CやC++はぜひ触れ!
確かに仕事では使わないかもしれない。
しかし!技術者として一皮向けるにはコンピュータの基本を再度学ぶ必要はある。
>>467 無理にツッパルのは止めとけ。あんたの知識じゃ余計に傷口を広げるだけだって。
CとC++をちゃんと使えて、それでいてJavaやらPerlやらもちゃんと使える人
と
Javaやら今主流の言語をちゃんと使える人
両者仕事はもちろんできる。
しかし、前者と後者のレベルの差は果てしない。
>>475 同意。
アセンブラが出来る奴とCからはじめている奴にも差もあるし、ハードから分かる奴とのも差が激しい。
>>473さんのようにCは業務では使わなくても勉強しておいた方がいいと思う。簡単だしね。
UNIXのソースとか読めると幅が広がるよ。
477 :
仕様書無しさん:2007/08/17(金) 22:07:18
>>475 C、Javaはともかくとして、C++はSTLがまだちゃんと整備されていない頃にやったから、
それでちゃんと使えるって言えるか怪しいのだが、そんな俺でも思う。
そんなに差あるか?簡単だろ。
日本語変数使ってるCOBOLのほうがよっぽど神がかってる。
よく80カラム制限ある中でやれるよな。
>>467 自分の非を認められない、性格の悪い人ですね。
アドレス演算子を知らなければ効率的なCプログラムはかけませんよ。
入門書だけしか読んでいないのでしょうか?
UNIXのソースってboostやdinkumSTLのソースより量が多くて難しいと聞いたのだが
>>479 量は多いけど、すばらしいサンプルだと思うよ。経験有る賢い人達がたたき上げたソースって、
こんなにエレガントなんだぁ・・・って関心する。デザパタ本が出る前はみんなこれで勉強したよ。
Cが簡単とか言うが、お前らCコンパイラ作れる?
作れとは言わんが、見当くらいはつく?
デザパタ以前ということは10年以上前の話だし
その間にCもC++も進化を遂げてる
となるともう古い情報源なんじゃないかなぁと思ったり(C++なんてまだまともな標準化されてない時代)
同じようなのでもっと新しいスタイルで書かれたソースもあるんじゃないの?
>>475 比べ方間違えてるぞ。
どっちも出来る人とどっちかしか出来ない人比べて差があるのはアタリマエ。
Cはめっちゃ出来るけどJavaは全く知らない人と、
Cは全然知らないけどJavaでガリガリ書ける人を比べろよ。
どっちかで普通に書ける人なら違う方理解するのも出来ると思うよ。
ポインタを要るって言う人と要らないって言う人は
作ってるプログラムのレイヤが違うわけだから、
意見は平行線だろ。
どっちが上等かなんて比べる意味が無い。
ポインタ要るかどうかについて私見で言うと、
下位レイヤでメモリのアドレス気にしなくていいハードウェアが出てくるまで
ポインタ使うソフトウェア(組込、OS、VMひっくるめて)は必要なわけだから
ポインタが要らなくなることは、まだしばらく無いと思うねぇ。
>>481 学校で簡単な奴とか作らなかった?アセンブラのマクロを吐き出すぐらいまで作ったよ。
仕事でもCコンパイラがないターゲットで開発する時とかに同じような物は沢山作ったよ。
最近の最適化の進んだ奴は気合を入れないと無理。あと標準ライブラリとかも時間的に面倒すぎ。
俺はジジイだからわからないけど、最近じゃ学校じゃやらなくなったの?
>>482 ソフトウェア作法とか、ソフトウェア書法みたいな感じと思ってくれてもいいよ。
>>481 基本的な流れは見当付くか。
C言語はどっちかっていうと水準低めだと思うし、
一番難しいのは構文解析辺りな気がする。
ただまぁ、C言語の基本的な文法、概念と挙動を理解するのが簡単なわけであって、
Cコンパイラの実装が出来るかどうかなんて、何が関係あるんだ?
>>487 だな。token周りが面倒。
変数とかはアドレッシングを直に選択できるよなシンボルで逃げるケースが多い。
最近のハードは複雑だから直接アセンブリコード吐くような類のものは平均的な学生レベルじゃ無理でしょう
出来てyacc,lex使ったインタープリタ程度
490 :
仕様書無しさん:2007/08/17(金) 22:43:42
>>475 同意
補足すると
「CとC++、Javaを使える人」 と 「Javaを使える人」との『差』
と
「Javaと他の主流言語を使える人」 と 「Javaを使える人」との『差』
前者と後者の『差』は、相当にかけ離れたものである現実。
>>485,487
さすがですね
コンパイラというのは大げさだったかも知れません
ポインタを含めたCの基本概念をアセンブラレベルでイメージでできるか聞きたかったのです
>>491 最近じゃ、Cなんて「高級アセンブラ」なんて呼ばれるぐらいだからなぁ。
・・・あんま関係ないか。
>>1さんの言う「ポインタ」はC/C++のポインタのことでOK?
だとすると「オブジェクトの参照の配列」ってのは?
C++ではコンパイルエラーだっ。
別の言語持ち出して、ポインタ批判されてもねぇ。
C/C++ならポインタは普通使うでほ。
そもそも、「代用」っていうなら逆の代用もあるんでは?
ポインタは型の分かりにくさがクソ過ぎる。配列と絡むところとか。
例えば2次の配列を関数に渡すときなんぞ、すげ〜ややこしい。
>>495 そりゃ C/C++ の構文がアレな所為であって
ポインタに罪はない。
>>497 それは「Cのポインタすら理解できないやつらが糞」なのか、
「未だにCを使ってるやつらが糞」なのか、どっちなんだ。
>>498 前者は成立するが、後者は成立しないだろ。
なぜ文章として成立しないもので択一問題が発生するんだ?
>>495 は?先頭アドレスと縦横サイズだけでいいじゃん
C++だとaaa[][]で渡してもまともに使えないんだったね そういえば
503 :
仕様書無しさん:2007/08/18(土) 22:09:54
>>481 コンパイラの作り方がソース付でネットでも転がっているため、
他の題材にしてくれ。
コンパイラを作るツールってなかったっけ?
名前忘れたけど、2つくらいのツールを組み合わせてやるのがあったよね。
yaccとlexはコンパイラというより構文解析器を作るやつ
yacc,lexか?bisonもyacc互換らしい
俺も詳しくはないが。。。
>>497 当然、ポインタぐらい理解できない奴が糞
>>501 逆にそんなコードが実行できたら、実行速度を疑っちゃうよ。
C/C++を使っている一番大切な所だからねぇ・・・
つーか、二次元配列を渡したいならstructでまとめちゃわない?
ublasみたいな感じでつかえる行列テンプレートって手もあるな
ポインタ演算の構文を使って扱っても速度面でも大したメリットないし
そうすると、その場限りの意味不明な構造体が増えてくるから、
俺は1次元に展開して、列数とともに渡している
matrix<int> m(3,3);
m(i,j) = 0;
みたいなインターフェースで扱えたらいいんだけども
Cのプリプロセッサでこれ作ろうとしたら凄いことになるだろうなぁ
演算子のオーバーロード
>>511 それが一番楽だよな?
先頭アドレス+縦横サイズがすべてだよな
3次、4次・・・ってなっても応用が効くし
boost::multi_arrayかそれに似た独自実装使うけどねぇ
ソースの中で直接ポインタを弄くりまわすみたいな泥臭いことなんて
仮にアセンブラ使う場合でもマクロとか使ってできるだけ避けるのに
516 :
仕様書無しさん:2007/08/19(日) 11:39:56
>>514 良し悪しは置いておいて、楽さ加減で言ったらコレだ。
#define X 10
#define Y 20
void func(int array[X][Y]);
int main()
{
int array[X][Y];
func(array);
}
>>516 それだと処理するもんが配列の要素と一致してねぇと面倒じゃねぇか
画像処理とかだと
ある地点の周辺4x5の範囲を処理したいとかそんな風にならね?
そうすると配列のデータの4x5の範囲だけほしいってことになるし
処理する関数のほうはどっからとるかなんてのは気にしない状態にしたい
って考えると先頭アドレス+XXXってのは楽でいいと思わね?
>>516 その場合、void func(int array[][Y]);とかvoid func(int (*array)[Y]);とかでもOKなんだけど、
void func(int array[][]);やvoid func(int **array);、void func(int *array[Y]);(これは演算子の優先順位の問題か)
はダメなんだよね。この辺が理解しにくい。
まあポインタを完全に理解してる人にとっては何てことないんだろうけど。
void func(int x,int y, array[x][y])
車輪の再発明
ポインタのようなややこしいものはC++の力を借りないと扱えませんってマジで
template <typename T> class Matrix {
public:
Matrix(size_t in_m, size_t in_n) : m(in_m), n(in_n), data(new T[m*n]) {}
~Matrix() { delete [] data; }
T& operator()(size_t i, size_t j) { return data[i*n+j]; }
const size_t m; const size_t n;
private:
T* data;
};
思い出した。
ラスタスキャンでただ値を取り出すだけのために
値ごとにいちいち乗算やってたら時間かかりすぎってことで
クラス化はボツになったんだ。
値ごとにいちいち乗算しないようにクラス化すればいいじゃない
523 :
仕様書無しさん:2007/08/19(日) 13:40:09
>>517 すまん。
ちょっと想像しきれてないかも。
行の幅(array[X][Y]のY)を引数で渡す?
func(&array[3][5], Y, 4, 5);
みたいな呼び出し方なんだったら、言いたいことが分かった気がする。
まぁ単に二次元配列を楽に関数に渡す方法を書いただけなんだ。
楽に、っていうか頭使わずにというか。
呼び出し元の宣言と同じように仮引数の宣言したら良いだけなんで。
なんかこの辺の「楽」の捉え方の違いで差が出てるっぽいような。
とっとと言語を変えろ
それで悩みは万事解決
C++は、スマートじゃ無いなりにいろいろ定型の手法があって「あぁ、例のコレね」で済むならいいけど
ポインタ苦手、って言っちゃうような層は余計アレルギーでるんだろうな
526 :
仕様書無しさん:2007/08/21(火) 00:48:18
オレの大嫌いな言葉:
"ポインタのポインタ"
俺はどっちか言うと「メモリリーク」の方が嫌いな言葉。
間接ポインタ、二重ポインタ、ダブルポインタ、ハンドル……
代替語はいくつかあるけど、どうも明解に通じないので
やっぱり「ポインタのポインタ」になってしまう。
多重間接参照
>>527 俺、それVC無しでとれたためしないw
みんな他の環境でどうやってとってんだろ?w
多分、起きてないはず・・・?以上の確証ないw
1日1回電源を落とすと分かっているので、メモリーリークしても1日持てばそれでいい。
リセットするわけにいかないシステム組んでる人は大変だなぁ
>>530 gnuの動的解析ツール使って検証したことあるわ。
ツール名忘れた。
>>531 malloc禁止の開発もあったりする。
PCでは1回ぐらいしかしたこと無いけど、
組み込み系だと結構しょっちゅう。
フラグメントの問題もあるしな。
専用のカスタムアロケータでも使うんじゃないのかな
>>531 うちだと要件が1日なら、連続不可耐久テストを1週間ぐらい回すかな
>>534 開発もテストもルール化されていないうちの会社では
すべて開発者のフィーリングで決まる。
少なくとも1週間連続運転なんてやる奴はいねぇ
536 :
仕様書無しさん:2007/08/22(水) 08:09:40
テスト用のデータは作らんのか?
>>528 (hogeへの)ポインタへのポインタも使う俺。
>>530 ラッパー関数作って、mallocとfreeのカウンタを保持してアプリ終了時に比較チェックしてる。
問題は、いざリークを起こしてる事が判明しても問題箇所の特定が出来ないことw
リークを起こしているけど見た目は問題なく動いてるというケースを見つける
ってこと以上のことは分からんので、さらに呼び出し元のソースファイルと行番号を記録し(ry
まあ、主にテスト段階で役に立ってる。
>>536 テストケース作る方針は特に無くて、個人のセンスに任されてるってことだべ?
540 :
仕様書無しさん:2007/08/23(木) 21:58:28
int main(int argc,char *argv[])
{
char *a;
while(1){
a=(char *)malloc(1000000)
}
}
を3日間実行し続けたのに、メモリがまったく減っていませんでした。なんで?
Fedora6です。
541 :
仕様書無しさん:2007/08/23(木) 22:02:13
シンタックスエラーだからじゃね?
>>540 コンパイルエラーでa.outが別コードが動いているのか、
最適化の段階で何もしていないって事になってるんじゃないの?
アセンブラに落として確認したらどうよ?
C++の勉強ついでに
while(new char[10000]);
を動かしたらひどい目にあった。
newなんてさ、ポインタ苦手さんだったら使わず
なにがなんでも実体的にインスタンス宣言しようとするんだろうな 無理か
>>544 俺の友人はC++でそこそこ動くシューティングゲームを作った後に
『malloc? new? なにそれ?』と本気でのたまったことがある。
全部staticかglobalの領域に確保してあったwwww
>>545 そんな縛りで作れる奴の方がスゲーぞ。俺もゲーム作っているけど、
開発時の効率を犠牲にしてまで、実行時の速度を得るのは職人。
ちょっと、そのシューティングゲームを作った人は、うちの会社にここに呼んでくれ。
マジでmallocとかnewとかしらないのら、いらんけど・・・
>>546 残念ながら本気で……w
まぁ今となってはポインタも理解したみたいですが。
使う領域が開始から終了まで通しでほぼ決まってるなら
グローバル確保でいいんじゃねと思うな
隠蔽だのモジュール化だのメンテナンスがとか別問題にして
パフォーマンス確保と対フラグメントの点において
携帯アプリでは現役のテク。
ドコモの900i以前では、GCした後コンパクションしないんだぜ?
ポインタは普通に使っているので、いらんと言われても困るんだが……
それでも、この間凄いポインタの使い方見たときは、どうしようかと思ったな
char* p = new char[20];
::strcpy(p, "エラー発生");
printf(p);
delete p;
突っ込みどころだらけ何だが……、これが客先に納品されてたよ。
551 :
550:2007/08/24(金) 22:49:43
おれも、上みたいなコードばかりしか見たことなかったとしたら、ポインタいらね
って言ってたと思うな
ステップ数がなんと通常の4倍に!
>>550 初心者の俺がどこが変か考えてみた:
・まずnewする必要が無い?
・strcpyも要らない?
・printfにそのまま文字列リテラルを突っ込むべきだ?
(実際のソースみないとわからない)
・deleteの使い方が間違っている。delete [] pだろう。
554 :
550:2007/08/24(金) 23:05:00
>>553 初心者のお前の方が、こいつより使えるなwww
お前にとっては嬉しいことかも知れんが、全部正解だよ。
newする必要なんかねぇ……でもよ、こいつのソースコードって全部コレなんだぜ。
newする必要がある箇所を探す方が難しい。
おまけに、あるクラスのメンバ変数をnewしたりdeleteしたりして、複数のスレッドで使いまわしたりもしてたから、
凄い事が起こるぜ。マルチスレッドなのに、マルチスレッドにすると確実に落ちるんだ。
すげーだろ。だからよ、コメントで
// 原因は分かりませんが、スレッドを立てると落ちやすくなります。
// お気をつけください。
って書いてあったよ。
>>550 おれも初心者だけど突っ込んでみる。
C++なら cout とか使ったらいいのに。
しかも ::strcpy としながら、printfには :: 付けないの?
察するにヘッダは<cstdio> ではなく <stdio.h> だね?
スニペットを悪用して一行分のタイプ数で数行のコードを生成するみたいなので
わざとステップ数稼いでるんだと思った
>>550 思うんだが、この手のコードが氾濫してるからポインタイラネってなるんじゃないか?
>>557 まあ、この場合は使う人次第さね…。
ポインタはケアレスミスも問題にしているんじゃないかな。
学ぶのが難しいのもあるけど。
確かにメモリ管理なんて勝手に裏でやってくれたほうが楽なんだよ。
エンタープライズソフトウェアでそんなもの面倒みたくないからね。
少なくとも、こんなもんは氾濫してないだろ……
>>559 たまたま社内で他人の書いたコードをいくつか読んだ俺に言わせてもらえれば……
そもそもnewやmallocの使い方を知らないから使わない奴ばかりのうちの職場ではこんな使い方する奴はいねぇ
うーん、
>>550程度でこんな反応だったら、うちの会社のコード読ませたらどうなるんだ……
どんなのがあるかって言うとだな、例えばこんなんだ。
//まず、550と同レベルのコードがある
char* p = new ……
//処理
free(p);
//ほんでもって続き
bool temp = Shori();
if (p == FALSE)
{
///エラー処理
}
意味が分からん
・newに対してfree
・解放したpを後で結果bool戻り値と勘違いして使っている
でも確かにガベコレがないC++だと、適当なライブラリからポインタが返ってきたときどうしたらいいのかって最初ちょっと悩むんだよな。
ライブラリにfree_***なんて関数があるのか、free()するのかdeleteするのか。
俺はauto_ptr<>で返して、暗に「deleteしてくれ」って言ってる。 通じるよね?
そもそも、適当なライブラリからポインタが返ってくる場合、
1. そのライブラリのマニュアルを読めば分かる。
2. そのライブラリにソースが付いている。
場合がほとんどだから、意識したことねぇよ。
逆に、ソースも何も付いてないでポインタ返してきたら、無論シカトだ。
んなもん。ってか、無視以外に手段がねぇよ
モジュール間をリソース管理の責任が移動するのはあまりよくない設計だとかEffective C++に書いてあった
だからそういうライブラリそのものをシカトする人もいるかもしれない
まぁソース見るかテストコード作ってdeleteして動作確認するだろうな。
どうしても使用せざるえない時は。
>>558 その前に、他の言語の文字列型のようなものがCの標準に
なかったことが問題の根源にあるような気もしなくもない。
>>571 そうだね。
末尾に0が来れば終わりなんてクソ仕様は
やっぱり時代のせいだったんだろうか…。
今でもライブラリの奥底ではそうだろ。隠蔽されてるだけ。
番兵を設けるか、構造体にして長さも一緒に保持するか
Excelは長さを持っていると聞いた。
それがセルの最大長の理由だと。
動的なメモリ確保なんていらん。不要。
>>577 富豪的プログラミングは大賛成。
しかし、思考停止野郎は死ね。
作った当時は想定してない規模でぶんまわすときにスタックが溢れたりすると非常に萎える
ポインタも理解してないようでは内部変数と外部変数の区別もついていまい
「死ね」とまで書くほど必死なnew&malloc厨。痛すぎ。
生半可な知識をふりかざして、書くコードはバグの宝庫。
出たバグはこっそり直して、表面化した悪いことは全部他人のせい。
だから、クビにならない。赤福の社長と同じ。
581 :
仕様書無しさん:2007/10/25(木) 13:35:02
正直、K&Rに載ってるmallocの古典実装レベルでも理解するのに数日かかった
>>580 ポインタの要、不要と、
動的メモリの要、不要は
別口じゃね?
アホにメモリの確保とかやらせるより、秀才が作ったクラス内でメモリ確保させた方がイイー(・∀・)
なるほど
アホコテ(つまりお前)にはレスさせないようにしましょう
してるじゃねーかw
久ち振りに制御系を手伝ったらfarとかnearとかホント糞だな。
もういい加減フラットにちろYO ヽ(`Д´)ノ ウワワーン
アホはさっさと死んどけば?