ポインタ死ね。
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/02/27(月) 17:16:020002デフォルトの名無しさん
2006/02/27(月) 17:24:27そうしたら現代のコンピュータを全て否定することになるがそれでもよいのか。
0003デフォルトの名無しさん
2006/02/27(月) 17:30:12なぜわからない!
0004デフォルトの名無しさん
2006/02/27(月) 17:35:35よし、頑張るよ。
0005デフォルトの名無しさん
2006/02/27(月) 18:35:58リアルで通報しますた。
0006デフォルトの名無しさん
2006/02/27(月) 22:47:110007デフォルトの名無しさん
2006/02/27(月) 23:12:300008デフォルトの名無しさん
2006/02/27(月) 23:13:150009デフォルトの名無しさん
2006/02/27(月) 23:13:540010デフォルトの名無しさん
2006/02/27(月) 23:14:190011デフォルトの名無しさん
2006/02/27(月) 23:15:040012デフォルトの名無しさん
2006/02/27(月) 23:16:020013デフォルトの名無しさん
2006/02/27(月) 23:16:350014デフォルトの名無しさん
2006/02/27(月) 23:16:400015デフォルトの名無しさん
2006/02/28(火) 00:19:200016デフォルトの名無しさん
2006/02/28(火) 00:46:190017デフォルトの名無しさん
2006/02/28(火) 01:46:190018デフォルトの名無しさん
2006/02/28(火) 01:50:550019デフォルトの名無しさん
2006/02/28(火) 04:43:4900201
2006/02/28(火) 11:37:28もう書き込まないでいいです。
0021デフォルトの名無しさん
2006/03/01(水) 00:48:58べ、別にあんたのためじゃないからねっ!仕事だからよ!仕事!!
0022デフォルトの名無しさん
2006/03/01(水) 02:00:18cloneとか、自分でやってよね!
0023デフォルトの名無しさん
2006/03/01(水) 09:49:58べ、別にガベージコレクトなんてどうでもいいんだから!
スマートポインタなんて知らないっ
0024デフォルトの名無しさん
2006/03/01(水) 13:58:070025デフォルトの名無しさん
2006/03/01(水) 14:12:47マイルがたまいる
ポイント・マイル
http://hobby7.2ch.net/point/
0026*
2006/03/01(水) 15:29:490027デフォルトの名無しさん
2006/03/01(水) 15:41:060028デフォルトの名無しさん
2006/03/01(水) 17:11:41なんで
int *p;
みたいに「ポインタ用int」みたいなもの定義しなくちゃいけないの?
普通にintにポインタの番号は格納できんのか?
0029デフォルトの名無しさん
2006/03/01(水) 17:14:24ウルトラ警備隊の車もポインターである。
星野流宇はボインダーである。
>>28
日本語でおk
0030デフォルトの名無しさん
2006/03/01(水) 17:20:41分かった。ポインタはあきらめた。
0031デフォルトの名無しさん
2006/03/01(水) 17:25:06つりにマジレスすると、
> 「ポインタ用int」
と思ってる時点で理解できてない
0032デフォルトの名無しさん
2006/03/01(水) 17:29:550033デフォルトの名無しさん
2006/03/01(水) 17:43:37CのポインタよりもPerlのポインタのほうが
わかりやすいってスレがあった。
あれみたら確かにPerlのほうがわかりやすい。
0034*
2006/03/01(水) 19:09:490035デフォルトの名無しさん
2006/03/01(水) 19:12:030036デフォルトの名無しさん
2006/03/01(水) 19:23:040037デフォルトの名無しさん
2006/03/01(水) 19:25:420038デフォルトの名無しさん
2006/03/01(水) 21:15:220039デフォルトの名無しさん
2006/03/01(水) 21:17:430040デフォルトの名無しさん
2006/03/01(水) 21:22:07と決めて使うのであれば何であってもポインタ
となる。だから言語でポインタがサポートされて
いなくてもポインタを作ることは可能だ。実体が
無く何かを指し示すものがポインタだからだ。
0041デフォルトの名無しさん
2006/03/01(水) 21:45:300042デフォルトの名無しさん
2006/03/01(水) 23:21:570043デフォルトの名無しさん
2006/03/01(水) 23:29:090044デフォルトの名無しさん
2006/03/02(木) 00:16:23255個のcharの配列へのポインタだっけ?
charへのポインタの255個の配列だっけ?
ちなみに前者だったとして、使い道としてはchar*なんだけど要素が255個のchar配列限定。と考えてよいですか?
たとえば、void func(char *p[255])ってやって、
int main()
{
char array1[255];
func(array1); ←OK
char array2[10];
func(array2); ←おこられる。
}
見たいな感じになってくれるんでしたっけ?
0045デフォルトの名無しさん
2006/03/02(木) 00:23:22char *(ptr[255])と解釈されるので後者。
char (*ptr)[255]と書けば前者として解釈される。
後半のことはvoid func(char (*p)[255]);と読めば大体あっている。
正しくはこうしなければならない。
char array1[255];
func(&array1);
typedef char T[255];とすれば、
char *p[255]はT *p;と同じになり、char array1[255];はT array1;になるので、
func(&array1);と言う風に&演算子を使う必要があるんだという説明で納得できる?
0046デフォルトの名無しさん
2006/03/02(木) 01:19:22すんばらしい。。
ありがとう(* ´д`*)
0047デフォルトの名無しさん
2006/03/02(木) 08:33:09ポインタだけで本一冊書いちゃうライターさん引っ張るのうますぎ
0048デフォルトの名無しさん
2006/03/02(木) 11:57:26ポインタ=メモリへのアドレス
それだけさw。
0049デフォルトの名無しさん
2006/03/02(木) 12:32:53俺はもうすませた。
0050デフォルトの名無しさん
2006/03/02(木) 14:46:100051デフォルトの名無しさん
2006/03/02(木) 14:53:59RPGツクールで作られたRPGを思い出した。
マウスカーソルが主人公でWindowsデスクトップ上の
ウィルスを駆除するというだけの単純な奴
0052デフォルトの名無しさん
2006/03/02(木) 16:16:47いまからPLAYする
0053デフォルトの名無しさん
2006/03/02(木) 18:27:50無駄な動きが多くて飽きてくるかもしれん。
作者は当時学生だったと思った。
0054デフォルトの名無しさん
2006/03/02(木) 19:10:420055デフォルトの名無しさん
2006/03/02(木) 19:15:28この'*'ってどこまでつけてOKなんだろ?
実際問題3つ以上つけたことないけど
0056デフォルトの名無しさん
2006/03/02(木) 19:28:24echo "int main(){int " > ptr.c
yes "*" >> ptr.c
echo "p;return 0;}" >> ptr.c
^C
gcc ptr.c
とやるとメモリ使用量がGByte単位でふくれあがった後コンパイラが落ちた。
0057デフォルトの名無しさん
2006/03/02(木) 19:36:300058デフォルトの名無しさん
2006/03/02(木) 19:41:070059デフォルトの名無しさん
2006/03/02(木) 19:44:141010個まではコンパイル出来るが、1011個だと
fatal error C1026: プログラムの解析に必要なスペ-スが、コンパイラ内でスタック オ-バ-フロ-を起こしました。
だって。
0060デフォルトの名無しさん
2006/03/02(木) 19:48:08ポインタのポインタのポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタの・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(ρw-).。o○
0061デフォルトの名無しさん
2006/03/02(木) 20:33:28一応 C++ では規格に「実装は最低限ここまで対応しろ」という
基準が示されています.
Pointer, array, and function declarators (in any combination)
modifying an arithmetic, structure, union, or incomplete type
in a declaration [256].
256 までは対応してないといけません.それ以上は実装の裁量次第かと.
006261
2006/03/02(木) 20:36:28数値として「推奨される値」でした.すいません.
0063デフォルトの名無しさん
2006/03/02(木) 20:37:400064デフォルトの名無しさん
2006/03/02(木) 20:38:521,968,402個以下でコンパイル成功。
1,968,403個以上で失敗、stackdumpを吐いて倒れた。
8,000,000個だとout of memory allocatingとメッセージをだして終了だった。
1,968,402境界の原因はメモリ不足ではなさげ。ほかのアプリを閉じてからやっても同じ結果だった。
暇人とか言わないでください。
0065デフォルトの名無しさん
2006/03/02(木) 21:07:38おれの VC++ 代(VIC カメラのポイントで払った)どうしてくれるんだ
0066デフォルトの名無しさん
2006/03/02(木) 21:11:320067デフォルトの名無しさん
2006/03/02(木) 21:28:460068デフォルトの名無しさん
2006/03/02(木) 22:40:23マジレスすると演算子の結合優先度は
int (*p);
ではなく
(int *) p;
「int型へのポインタ」という型になる。
0069デフォルトの名無しさん
2006/03/02(木) 22:42:45ポインタへのポインタならわかるんだが。
0070デフォルトの名無しさん
2006/03/02(木) 23:05:37SUGEEEEEEEEEEEEEEEEEEEE
WKARIYASUUUUUUUUUUUUUUUUUUU
0071デフォルトの名無しさん
2006/03/02(木) 23:18:19void A( unko u )
{
}
void main()
{
unko& u;
A( u );
return;
}
0072デフォルトの名無しさん
2006/03/03(金) 00:30:53> (int *) p;
ちがうとおもう
0073デフォルトの名無しさん
2006/03/03(金) 00:48:060074デフォルトの名無しさん
2006/03/03(金) 01:00:30int *p, q, r
ってやったらpだけポインタ
0075デフォルトの名無しさん
2006/03/03(金) 01:25:36だろうがpだけポインタだった希ガス
0076デフォルトの名無しさん
2006/03/03(金) 01:31:030077デフォルトの名無しさん
2006/03/03(金) 01:46:500078デフォルトの名無しさん
2006/03/03(金) 01:50:55という俺の妄想
0079デフォルトの名無しさん
2006/03/03(金) 02:03:230080デフォルトの名無しさん
2006/03/03(金) 02:05:120081デフォルトの名無しさん
2006/03/03(金) 02:07:580082デフォルトの名無しさん
2006/03/03(金) 02:38:410083デフォルトの名無しさん
2006/03/03(金) 04:23:590084デフォルトの名無しさん
2006/03/03(金) 15:59:100085デフォルトの名無しさん
2006/03/03(金) 22:17:020086デフォルトの名無しさん
2006/03/03(金) 22:56:390087デフォルトの名無しさん
2006/03/03(金) 23:00:52で両方ともint型ポインタに成らないのがマジむかつくんですが。
0088デフォルトの名無しさん
2006/03/03(金) 23:02:04typedef int* PINT;
PINT a, b;
008987
2006/03/03(金) 23:17:110090デフォルトの名無しさん
2006/03/03(金) 23:26:42ではどのようにtypedefすればできる仕様ならよいでしょうか。
たとえば
tempate<typename T>
class type
{
typedef T type;
};
typedef type<int*>::type PINT;
0091デフォルトの名無しさん
2006/03/03(金) 23:29:38String^ a, b;
で通るはず
0092デフォルトの名無しさん
2006/03/03(金) 23:31:50(p)←*pのアドレス入り
↓
(*p)←計算とかで使うの数値入り
って事?
0093デフォルトの名無しさん
2006/03/04(土) 01:50:06俺には向かないと思ったんだけど・・・昔はアセンブラで間接技を
使って一本とっていたので、あれとおんなじと判ったとき,
目からうころがとまれした。
0094デフォルトの名無しさん
2006/03/04(土) 02:01:26とれました?
どっちにしろうろこは落ちる物です
無知を晒して本当にありがとうございました
0095デフォルトの名無しさん
2006/03/04(土) 02:06:090096デフォルトの名無しさん
2006/03/04(土) 03:02:320097デフォルトの名無しさん
2006/03/04(土) 04:43:270098デフォルトの名無しさん
2006/03/04(土) 07:09:04失明乙であります
0099デフォルトの名無しさん
2006/03/04(土) 12:15:530100デフォルトの名無しさん
2006/03/04(土) 12:44:310101デフォルトの名無しさん
2006/03/04(土) 13:31:350102デフォルトの名無しさん
2006/03/04(土) 16:02:49女エンジニアだか女ソフトウェア研究者の
ブログを思い出した。
Javaを使いこなしてるらしい。
0103デフォルトの名無しさん
2006/03/04(土) 16:04:33http://life7.2ch.net/test/read.cgi/credit/1130095733/
0104デフォルトの名無しさん
2006/03/04(土) 23:42:360105デフォルトの名無しさん
2006/03/04(土) 23:49:22オーバーロード引数問題の解決
誤ってdeleteさせない
0106デフォルトの名無しさん
2006/03/04(土) 23:50:280107デフォルトの名無しさん
2006/03/04(土) 23:50:570108デフォルトの名無しさん
2006/03/04(土) 23:55:130109デフォルトの名無しさん
2006/03/05(日) 00:03:050110デフォルトの名無しさん
2006/03/05(日) 00:19:21自分の使っているライブラリの仕様で
参照を使えって指定されている場合を除く。
0111デフォルトの名無しさん
2006/03/05(日) 00:29:03演算子多重定義。
構造体・クラスの値渡し・constポインタ渡しの代わりにconst参照。
0112デフォルトの名無しさん
2006/03/05(日) 00:29:210113デフォルトの名無しさん
2006/03/05(日) 00:30:190114デフォルトの名無しさん
2006/03/05(日) 00:31:050115デフォルトの名無しさん
2006/03/05(日) 00:34:130116デフォルトの名無しさん
2006/03/05(日) 02:35:160117デフォルトの名無しさん
2006/03/05(日) 10:52:530118デフォルトの名無しさん
2006/03/05(日) 11:17:030119デフォルトの名無しさん
2006/03/05(日) 13:02:030120デフォルトの名無しさん
2006/03/05(日) 13:11:050121デフォルトの名無しさん
2006/03/05(日) 13:40:55演算子オーバーロードが実行時に参照を使って何かにアクセスするわけじゃないし。
0122デフォルトの名無しさん
2006/03/05(日) 13:47:48>>119はなにがいいたいんだ?
0123デフォルトの名無しさん
2006/03/05(日) 13:52:16あー。メモリ内容ぶっ壊すようなマイナス的なものは除く。
0124デフォルトの名無しさん
2006/03/05(日) 13:55:36早くポインタ殺せ
0125デフォルトの名無しさん
2006/03/05(日) 13:56:55どれもC++のポインタは死んでいる。
0126デフォルトの名無しさん
2006/03/05(日) 14:40:29メモリを壊すのはポインタじゃなくてたいていは代入だ
殺すなら代入を殺せ
0127デフォルトの名無しさん
2006/03/05(日) 15:34:41そもそもの原因だ。ポインタを殺せ。
0128デフォルトの名無しさん
2006/03/05(日) 16:24:49参照は演算子オーバーロードのために導入したとビョーン先生が言ってる
0129デフォルトの名無しさん
2006/03/05(日) 19:09:04バイナリファイルをCDからガツンと読み込んで、その先頭アドレスを
構造体ポインタにキャストしてデータとして使っていたが、
その手の手法は「参照」じゃ�_。
0130デフォルトの名無しさん
2006/03/05(日) 20:03:27安全を求めたらできることは段々少なくなってくる
世の中こんなもんだろう
0131デフォルトの名無しさん
2006/03/05(日) 20:06:20ゴム越しにセクースするようなものだ。
0132129
2006/03/05(日) 20:49:51アドレスとポインタの違いを説明できんのか?
0133デフォルトの名無しさん
2006/03/05(日) 20:53:090134デフォルトの名無しさん
2006/03/05(日) 21:09:410135デフォルトの名無しさん
2006/03/05(日) 21:10:14struct hoge {/* 〜 */};
void *p = ガツン;
hoge& hoge = *static_cast<hoge*>(p);
まあ褒められたことではないし、おとなしくポインタを使うべきだと思うけど。
0136デフォルトの名無しさん
2006/03/06(月) 01:43:320137デフォルトの名無しさん
2006/03/06(月) 03:36:30巧い!
安全だけどいまいっぽ気持よくない
0138デフォルトの名無しさん
2006/03/06(月) 03:37:46ゴムつけないと早すぎちゃうでしょ><
0139デフォルトの名無しさん
2006/03/06(月) 03:43:58発想を逆転して、参照が示す先に
データをロードすれば良いだけ。
0140デフォルトの名無しさん
2006/03/06(月) 15:36:07俺おなにーしすぎて超遅漏。
0141デフォルトの名無しさん
2006/03/07(火) 02:07:420142デフォルトの名無しさん
2006/03/07(火) 02:27:47いいからアセンブっとけ
0143デフォルトの名無しさん
2006/03/07(火) 09:47:15NULLの内部表現が0でないマシンで、memset(...0...)したときに、はまる
かもな
0144デフォルトの名無しさん
2006/03/07(火) 10:41:170145デフォルトの名無しさん
2006/03/07(火) 12:59:25はまんねーっていうかいったいどんな初心者想定して話してんだよw
0146デフォルトの名無しさん
2006/03/07(火) 13:17:24ポインタだと必要サイズ分だけ移動だけど
アセンブリだと単純に次のアドレスでしょ?
0147デフォルトの名無しさん
2006/03/07(火) 13:37:32文法的知識があやふやでも正しくコーディングできるということか。
正 直 ど う で も い い
0148デフォルトの名無しさん
2006/03/07(火) 21:44:09「++」や「--」などの演算をした時は、
普通の整数などと「++」「--」の動作が違って、「必要サイズ分移動」という命令になる
整数等向けの「++」「--」と、ポインタ向けの「++」「--」は別の処理だ
っていう解釈でOK?
0149デフォルトの名無しさん
2006/03/07(火) 21:54:30変に勘ぐりすぎ。ポインタのインクリメントは、単に指す場所が一つずれるだけ。
そのときに実際のアドレスがどうなっているかは意識する必要がない。
0150デフォルトの名無しさん
2006/03/07(火) 21:54:54ていうか、まさに、ポインタの内容が、インクリメント/デクリメントするんだから、普通の整数と同じよん。
"char" と "char *" は大きさが違うってこと。
0151150
2006/03/07(火) 21:59:53使いこなせているのに、人に説明するのは難しいorz
0152デフォルトの名無しさん
2006/03/07(火) 23:08:09/ ̄ ̄ ̄ ̄\,, /−、 −、 \
/_____ ヽ / | ・|・ | 、 \
| ─ 、 ─ 、 ヽ | | / / `-●−′ \ ヽ
| ・|・ |─ |___/ |/ ── | ── ヽ |
|` - c`─ ′ 6 l |. ── | ── | |
. ヽ (____ ,-′ | ── | ── | l
ヽ ___ /ヽ ヽ (__|____ / /
/ |/\/ l ^ヽ \ / /
| | | | l━━(t)━━━━┥
_____
/ ̄ ̄ ̄ ̄\,, / \
/_____ ヽ / ______ \
| | | / / \ ヽ
|,,_ _, |___/ |/ ,,_ _, ヽ |
| "゚'` } "゚` 6 l | "゚'` } "゚` | |
フッ ヽ __''_, ,-′ フッ | __''_, | l
ヽ. ー__ /ヽ ヽ ー / /
/ |/\/ l ^ヽ \ / /
| | | | l━━(t)━━━━
0153デフォルトの名無しさん
2006/03/08(水) 00:29:090154デフォルトの名無しさん
2006/03/08(水) 00:29:58誰かデザインして
0155デフォルトの名無しさん
2006/03/08(水) 01:36:04ptr配列の現在の項目・・・の次の項目を取得するとちゃんとわかっただろうね。
0156デフォルトの名無しさん
2006/03/08(水) 01:40:09はぁ?
ポインタも long *lptr; lptr++; とかやれば、アドレスは4進むけど、配列の次の要素に移るけど?
0157デフォルトの名無しさん
2006/03/08(水) 01:48:19それとか、ポインタは配列の次の要素に進むのと同じ動きをしますと説明するとかさ。
0158デフォルトの名無しさん
2006/03/08(水) 01:50:320159デフォルトの名無しさん
2006/03/08(水) 04:52:43何十万人のプログラマーが苦しんだ (楽しんだ) ことか。。。
0160デフォルトの名無しさん
2006/03/08(水) 07:24:000161デフォルトの名無しさん
2006/03/08(水) 09:38:33メモリ全体を表す_MEMORYって配列を用意することにしよう
0162デフォルトの名無しさん
2006/03/08(水) 10:46:48ポインタなんて概念のある言語は糞
0163デフォルトの名無しさん
2006/03/08(水) 10:49:010164デフォルトの名無しさん
2006/03/08(水) 12:37:57ポインタを生で使える概念のある言語は糞。
0165デフォルトの名無しさん
2006/03/08(水) 14:26:21バッファオーバーフローはコード書いた奴が阿呆なだけで
ポインタとは関係ないですね。
0166デフォルトの名無しさん
2006/03/08(水) 14:27:51原理主義者の間では、*ptr と ptr[0] は違うものとして認識されます。
0167デフォルトの名無しさん
2006/03/08(水) 14:37:060168デフォルトの名無しさん
2006/03/08(水) 14:40:20*ptrは要は、*(ptr + 0)なんだからptr[0]に決まっているじゃないか。
0169デフォルトの名無しさん
2006/03/08(水) 14:52:32どこの原理主義者だか知らんけどただの半端もんじゃん
0172デフォルトの名無しさん
2006/03/08(水) 18:41:17全然。配列的に扱わない場合は参照を使うし。
0173デフォルトの名無しさん
2006/03/08(水) 18:44:040174デフォルトの名無しさん
2006/03/08(水) 19:20:220175デフォルトの名無しさん
2006/03/08(水) 21:19:230176デフォルトの名無しさん
2006/03/08(水) 23:45:27「おまえって報われない性格だろ?」ってさりげなく思った
会社かわわっちまったけどどうしてるかなT先輩
0177デフォルトの名無しさん
2006/03/08(水) 23:56:110178デフォルトの名無しさん
2006/03/09(木) 00:43:150179デフォルトの名無しさん
2006/03/09(木) 01:02:32char *ptr = new char[SIZE];
として生成されたものは、
delete [] ptr;
としないと、実行時エラーになるからな。
0180デフォルトの名無しさん
2006/03/09(木) 04:06:41いえ、そういう違いではなくて
void func( char *p, char a[256] )
{
...
}
のポインタpと配列aはなにが違いますか?
0181デフォルトの名無しさん
2006/03/09(木) 04:15:070182デフォルトの名無しさん
2006/03/09(木) 06:06:000183デフォルトの名無しさん
2006/03/09(木) 06:21:140184デフォルトの名無しさん
2006/03/09(木) 06:23:11違いはない
>>183
C++では0です
0185デフォルトの名無しさん
2006/03/09(木) 06:33:39「アドレスが違う」せいではない
それは、operator new[] の第1引数に渡される値が単に
要素数に比例するわけではなく、不定であることと同じ理由だ
全くいい加減なことをいう奴が多いな
0186デフォルトの名無しさん
2006/03/09(木) 06:36:38パルプンテする事は可能ですか?
0187デフォルトの名無しさん
2006/03/09(木) 07:10:270188デフォルトの名無しさん
2006/03/09(木) 08:23:48壊そうとする場所とそのとき動いているOSに依る。
0189デフォルトの名無しさん
2006/03/09(木) 08:28:460190デフォルトの名無しさん
2006/03/09(木) 08:57:04case文の内部で
int a ってかいたらエラーがでたんだけど、
int a[1] ってかいたらOkなのは何故?
0191デフォルトの名無しさん
2006/03/09(木) 09:01:370192デフォルトの名無しさん
2006/03/09(木) 13:02:21MS-DOS や Win9x、Classic Mac OS ならやり放題ですが。
(だから「OS に夜」って書いてあんだろ?)
0193デフォルトの名無しさん
2006/03/09(木) 13:25:150194デフォルトの名無しさん
2006/03/09(木) 13:27:490195デフォルトの名無しさん
2006/03/09(木) 17:39:48暇なので通報しておきました
0196デフォルトの名無しさん
2006/03/09(木) 18:09:13自分のプログラムを破壊できるじゃんw
そして自分のプログラムが暴走して、
そのプロセスの権限で出来ること・・・たとえば
他のファイルの破壊などが可能。
0197デフォルトの名無しさん
2006/03/09(木) 20:43:35違いないんですか?
どういうこと?
さっぱりわからん
0198デフォルトの名無しさん
2006/03/09(木) 21:36:34関数の引数に於いて〜の配列型は〜へのポインタ型に読み替えられるという規則がある。
0199デフォルトの名無しさん
2006/03/09(木) 21:43:39>>180は256+4バイトスタックに積まれる気がする。
pはスタックに積まれている値を持って来て
aはスタックのアドレスを指すんじゃないかと。
テストコード書けばすぐわかるけど、面倒だからやらん。
0200デフォルトの名無しさん
2006/03/09(木) 23:12:51おまえの書いたコードは全部捨ててくれ
0201デフォルトの名無しさん
2006/03/09(木) 23:55:42ストレートで笑える
0202デフォルトの名無しさん
2006/03/09(木) 23:56:21釣りですか?
0203デフォルトの名無しさん
2006/03/10(金) 00:05:370204デフォルトの名無しさん
2006/03/10(金) 12:05:56正解を教える。C++においてもCと同様、ヌルのビットパターンは
ゼロだと保証されてはいない。ただ、以下のことが保証されている。
(たとえヌルのビットパターンがゼロでなくても)
char *p = 0; // 必ずヌルビットパターンが代入される
p == 0; // pがヌルビットパターンなら必ず真になる
ゼロと言う数字で代入したり比較してるのでヌルビットパターンが
ゼロビットの羅列でない時は直感的でないが、言語仕様として
そうなるように決められている。
ここを勘違いして、C++のヌルビットパターンはゼロだと思ってる人
が居るみたいだが、詳しくはD&Eを参照
0205デフォルトの名無しさん
2006/03/10(金) 12:10:06だろうね。と言っておいても困らないと思う。
0206デフォルトの名無しさん
2006/03/10(金) 12:20:230207デフォルトの名無しさん
2006/03/10(金) 12:20:54クレ板から来たのかw
0208デフォルトの名無しさん
2006/03/10(金) 12:28:100209デフォルトの名無しさん
2006/03/10(金) 12:45:45言語理論より商業で役に立つことが優先される実動作重視のC++らしい答えだ
0210デフォルトの名無しさん
2006/03/10(金) 14:05:04> (たとえヌルのビットパターンがゼロでなくても)
> char *p = 0; // 必ずヌルビットパターンが代入される
> p == 0; // pがヌルビットパターンなら必ず真になる
へー、全く知らなかった
整数の0と代入したり比較したりじゃないのか
0211デフォルトの名無しさん
2006/03/10(金) 14:10:07ttp://www.kouno.jp/home/c_faq/c5.html
>>208
ttp://www.kouno.jp/home/c_faq/c5.html#17
0212デフォルトの名無しさん
2006/03/10(金) 23:36:11そのサイトすげー勉強になる
0213デフォルトの名無しさん
2006/03/10(金) 23:38:47/ハノ))
/*゚ー゚」
「(* *) (´Д`)ハア…
//*‖ >\ ハア…
// ‖ /<
0214デフォルトの名無しさん
2006/03/11(土) 00:06:20はどんな判定になるの?
0215デフォルトの名無しさん
2006/03/11(土) 00:09:56char* p;
だったとして
pがぬるぽ
ifはNULLを評価→偽
0216デフォルトの名無しさん
2006/03/11(土) 08:34:110217デフォルトの名無しさん
2006/03/11(土) 08:39:46if(p) は if(p != 0)と同じ
0218デフォルトの名無しさん
2006/03/11(土) 22:20:350219デフォルトの名無しさん
2006/03/11(土) 22:27:20だけど
int型にdouble値を代入しようとするときに、小数点以下が切り捨てられてて適切に値が変換されるように
ポインタに0を代入したり比較するときも、適切に変換されてヌルポインタ値を使う
0220デフォルトの名無しさん
2006/03/11(土) 22:45:26糞コードは減った。
0221デフォルトの名無しさん
2006/03/11(土) 22:52:020222デフォルトの名無しさん
2006/03/11(土) 22:56:070223デフォルトの名無しさん
2006/03/12(日) 00:53:39これは NULL って単に人間にとっての分かりやすさのために
定義されているマクロなんだよな。
ポインタとしての 0 は常にヌルポインタであって、
それはアドレスとしての 0x00000000番地 ではないわけだけど、
とすると 0x00000000 番地に書き込みたいときは
int* p = (int*)0;
*p = 12345;
とかやっちゃっていいもんなんだろうか。いや、そんなこと
やりたいと思うケースは少ないと思うけど。インラインアセンブラ
使うべき?
0224デフォルトの名無しさん
2006/03/12(日) 00:56:110225デフォルトの名無しさん
2006/03/12(日) 00:56:490226デフォルトの名無しさん
2006/03/12(日) 00:57:52わかってやってるんなら何だってやっていいのがC
0227デフォルトの名無しさん
2006/03/12(日) 00:58:550228デフォルトの名無しさん
2006/03/12(日) 01:00:06つまりその保証は C の規格の外、ということか。
0229デフォルトの名無しさん
2006/03/12(日) 01:45:52はい,じゃぁネタしまーす。
int, double, char〜
0230デフォルトの名無しさん
2006/03/12(日) 01:54:590231デフォルトの名無しさん
2006/03/12(日) 02:28:47歴史的な理由により、ポインタだけど。
0232デフォルトの名無しさん
2006/03/12(日) 02:33:360233デフォルトの名無しさん
2006/03/12(日) 03:01:410234デフォルトの名無しさん
2006/03/12(日) 05:10:05ちゃんと運転できないと、簡単に事故ってメチャメチャになるけどね。
Javaはラリーカーだね。
0235デフォルトの名無しさん
2006/03/12(日) 05:12:55JAVAなんてゴーカートだろ
それも動物の形してるやつで50円入れたら動くやつ
0236デフォルトの名無しさん
2006/03/12(日) 06:24:130237デフォルトの名無しさん
2006/03/12(日) 06:30:080238デフォルトの名無しさん
2006/03/12(日) 06:43:230239デフォルトの名無しさん
2006/03/12(日) 11:04:120240デフォルトの名無しさん
2006/03/12(日) 11:41:12あるあ・・・・・・あるあるwwww
0241デフォルトの名無しさん
2006/03/12(日) 14:05:51電気で動く車あったじゃん。
あれって、金網と床を同時に触ったら感電するの?
0242デフォルトの名無しさん
2006/03/12(日) 16:55:44int* 型という型があるというイメージで
でもこれだと幾つもint* 型があるなら
何回もこれ書かないといけない。
後ろに書いても良いならint型の所でまとめて宣言できるけど
0243デフォルトの名無しさん
2006/03/12(日) 21:42:560244デフォルトの名無しさん
2006/03/12(日) 21:53:090245デフォルトの名無しさん
2006/03/12(日) 22:59:320246デフォルトの名無しさん
2006/03/13(月) 00:12:45typedefすればいい
0247デフォルトの名無しさん
2006/03/13(月) 00:28:01最高速度
ラリーカーが逆立してもF1カーにはスピードで勝てない
しかしオフロードとなると話は一変する
最高速こそ遅くとも、ラリーカーは道悪での減速が他者よりも相対的に少ない。
0248デフォルトの名無しさん
2006/03/13(月) 05:16:49日本語でどうぞ。
0249デフォルトの名無しさん
2006/03/13(月) 05:21:14保護されてるから
0250デフォルトの名無しさん
2006/03/13(月) 05:39:25ようするにラリーカーはスピードでは中途半端だけど、アスファルトじゃなくても走るってことだよ。
0251デフォルトの名無しさん
2006/03/13(月) 17:41:37>それができるのはポインタがアドレスになってるアーキテクチャだけってこと
PL/M だけか。
0252デフォルトの名無しさん
2006/03/13(月) 20:42:000253デフォルトの名無しさん
2006/03/13(月) 21:09:320254デフォルトの名無しさん
2006/03/13(月) 21:34:220255デフォルトの名無しさん
2006/03/13(月) 21:37:19なぜかアドレスの話に刷りかえる人が出てくるのはしようがないことですか?
0256デフォルトの名無しさん
2006/03/13(月) 21:45:54後発のCとの互換性に縛られない言語はたいていうまいこと改善している。
今更Cの仕様をグダグダ言って何がしたいんだ?
0257デフォルトの名無しさん
2006/03/13(月) 22:26:16ガチムチの色黒兄貴がオッス連呼で張型ケツにぶちこまれ腰振ってました。
俺もくわえさせられて浣腸喰らい無様に排便さらしました。
バリカン出されたときは一瞬引いたけど、兄貴の「いやなら止めていいんだぜ!」
の一言で覚悟決め、生まれて初めて丸刈りになりました。
その後、脇・チンゲも刈られてビンビンのマラ、思いっきりしごかれ
派手にガチムチ兄貴の顔に飛ばしました。スッゲー男らしく気持ちよかったです。
0258デフォルトの名無しさん
2006/03/13(月) 23:04:150259デフォルトの名無しさん
2006/03/14(火) 13:32:36>今更Cの仕様をグダグダ言って何がしたいんだ?
「俺様が理解できないのは、仕様が糞な所為だ」
という事にしたいんだ。
0260デフォルトの名無しさん
2006/03/15(水) 00:45:48ただ、どっかの時点で、配列だけでもオーバーフローしたときに
エラーになるように、どっかの偉い人に規定を作ってほしかった
そりゃ
array[10]も、10[array]も
要は*( (array) + (10))だからしゃーねーだろ
って言われりゃごもっともだけど
せめて宣言時にarray[10]
ってしたときは使うときもarray[1〜10]にして欲しかった
ま、別に良いけど。
いまさらの話だし。
でももし、「じゃ、お前の言う通りに配列の最初の要素は1からにしてやるよ」
って言われたら、「いや、困る」って言っちゃうな、だってもう慣れちゃったもん
0261デフォルトの名無しさん
2006/03/15(水) 00:53:52こういう発想の奴はCには向かない。
仮に完全にフルスクラッチでCを作り直したとしてもそうはならないだろう。
0262デフォルトの名無しさん
2006/03/15(水) 00:57:080263デフォルトの名無しさん
2006/03/15(水) 06:29:43おまえら、ポインタ好きなんだろ?
0264デフォルトの名無しさん
2006/03/15(水) 06:30:230265デフォルトの名無しさん
2006/03/15(水) 07:40:13int *unko1;
int** unko2;
unko1 = &unko;
unko1 = NULL;
unko1 = *unko2;
unko1 = NULL;
それぞれの値をunko1に代入してからunko1にNULLを代入したとき、unkoとunko2の値はどうなるでしょう。
0266デフォルトの名無しさん
2006/03/15(水) 08:49:16unko1 = NULLになるだけ
0267デフォルトの名無しさん
2006/03/15(水) 13:39:08勝手にエラーで止まられては困る。
境界越えた領域を指定してメモリ記憶ぶっ壊したい時どうするんだよ?
0268デフォルトの名無しさん
2006/03/15(水) 13:43:090269デフォルトの名無しさん
2006/03/16(木) 05:08:00lintで指摘できれていればそれでいいってことはないのか。
0270デフォルトの名無しさん
2006/03/16(木) 07:28:06まあ 配列とポインタをfusion させたCの設計者は偉いと思うけどね
一度pascal系で配列とポインタの概念を分離させるリハビリをしてみては如何?
とのたまうDEL厨でした
0271デフォルトの名無しさん
2006/03/16(木) 13:35:43/ハハハ\
./ \
/ _ _ \
| ⊂・⊃ ⊂・⊃ |
(|. ∴ ∪ ∴ | ./ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.\ <=> / < このスレ立てたのは藤木君だろ
\_____/ \______________
0272デフォルトの名無しさん
2006/03/16(木) 17:59:030273デフォルトの名無しさん
2006/03/16(木) 18:05:250274デフォルトの名無しさん
2006/03/16(木) 18:19:07「似たようなもん」という解釈で特に問題ないからOK
0275デフォルトの名無しさん
2006/03/16(木) 18:27:09OKなのはC言語だからでしょ
0276デフォルトの名無しさん
2006/03/16(木) 18:30:120277デフォルトの名無しさん
2006/03/16(木) 18:31:020278デフォルトの名無しさん
2006/03/16(木) 18:31:470279デフォルトの名無しさん
2006/03/16(木) 18:42:26いちいちお礼いってもらえてうれしいよ
0280デフォルトの名無しさん
2006/03/16(木) 18:43:57main() {
int a;
int i = (int)&a;
*(int *)i = 0;
printf("%d\n", a);
return 0;
}
結果
0
これは、合法です。
0281デフォルトの名無しさん
2006/03/16(木) 18:48:35一部のマイコンのCは今でもそういうのが多い
0282デフォルトの名無しさん
2006/03/16(木) 18:56:130283デフォルトの名無しさん
2006/03/16(木) 18:59:46ある変数のアドレス演算子の結果をintにキャストした値をポインタ型にキャストして参照はがしすると元の変数となる
というのは、合法なの?
0284デフォルトの名無しさん
2006/03/16(木) 19:01:01これができるからC言語は強力なのだよ
0285デフォルトの名無しさん
2006/03/16(木) 19:07:110286デフォルトの名無しさん
2006/03/16(木) 19:13:020287デフォルトの名無しさん
2006/03/16(木) 19:18:140288デフォルトの名無しさん
2006/03/16(木) 19:28:52そういうときにはintptr_t/uintptr_t。
C99の<stdint.h>或いはC++なら<boost/cstdint.hpp>で使える。
VC++の少なくとも7.1以上では独自拡張として<stddef.h>などにある。
0289デフォルトの名無しさん
2006/03/16(木) 19:32:4264bit時代もまたそうなるな
0290デフォルトの名無しさん
2006/03/16(木) 19:33:45int型で表現できなくても>>288のでいいんじゃないの?
よくわからんけどint型で表現できるとお得なことでもあるんですか?
0291デフォルトの名無しさん
2006/03/16(木) 20:11:490292デフォルトの名無しさん
2006/03/16(木) 20:27:30|
|
メ\,_ ,メ゙\、
.メ′ .゙゙アhr _,zl||y,_ .゙∨
.″ .y!^⌒ ¨\ .,,,,,,__
.,yr=¬z .l| ◎ 《 . ゙゙̄^へu, ヽ
,メ″,z厂◎ l| ¥ il! ゙ミ つ
il「 ミy ..,ilト ゙ミy_ ア ,メ .∨ わ
.ll′ 干=冖″ ,,,yyyyy. l| ぁぁ
.l| ,,,yvr=冖''''|リ|||》巛》ミ冖'li厂.l| .,l! あぁ
.l! 《vvvr=冖¨ ̄ .゙干l! .,メ ああ
.l| .l| .,,yrrvy_ ,,,,,,_ .《yrl″ ぁあ
\_ ,l|.,yzl^^゙゙^冖《《||7厂`゙リu_ .l|
0293デフォルトの名無しさん
2006/03/16(木) 21:07:56int型じゃないけど、ポインタの値をSIMDに突っ込んで
高速にアドレス生成するような用途もあるから、アドレス
がポインタ変数の中だけの存在ではないという話。
0294デフォルトの名無しさん
2006/03/16(木) 21:26:39>>280 みたいにintにポインタの値代入できなくなるのかな?
それともintが64bitになるのかな?
0295デフォルトの名無しさん
2006/03/16(木) 21:27:550296デフォルトの名無しさん
2006/03/16(木) 21:35:15sizeof(long)>=sizeof(int)は仕様で決まってますが。
>>294
だから一部の環境では代入に警告が出るようになってきている。
0297デフォルトの名無しさん
2006/03/16(木) 21:38:30マジで?
0298デフォルトの名無しさん
2006/03/16(木) 23:38:54一緒に仕事したくないけど、どういうときに使うのコレ
0299デフォルトの名無しさん
2006/03/16(木) 23:50:040300デフォルトの名無しさん
2006/03/16(木) 23:58:300301デフォルトの名無しさん
2006/03/17(金) 12:01:22・Cでは配列=ポインタ ほぼ概念に差が無い
char *p;
char buf[10];
p=buf; <--- 普通に使われる
p[3]=1234; <--- ポインタのまま配列表現可能
・Delphiでは配列とポインタは別の概念
var buf: array [0..9] of byte;
var p:PByte;
p:= @buf[0]; <- 配列の中身をアクセスするにはこうする
p^ := 1234; <--- buf[0] への代入
ポインタを使いながらCのように相対位置アクセスをしたいなら、配列ポインタを使う必要がある
type TAbyte =array [0..999] of byte;
var paTAbyte^ absolute p; <--- absolute を使うと、p と paが同じ番地である事を強制出来る
p:= @buf[0];
inc(p);
pa^[3] = 1234; <--- buf[4] へのアクセス
0302デフォルトの名無しさん
2006/03/17(金) 12:05:29>>pa^[3]
ププw
こんなダサい構文は思いついても普通実行(実装)に移さないよなw
それを平気でやってのけるDelphi開発者にしびれる憧れるぅ!
それを使うDelphierはゲロ以下の匂いがぷんぷんするぜぇ〜Www
0303デフォルトの名無しさん
2006/03/17(金) 12:23:14その気になればCでもできる、誰もやらないけど。
char buf[10];
char (*pa)[10];
pa = &buf;
(*pa)[3] = 1234;
0304デフォルトの名無しさん
2006/03/17(金) 14:47:03Delphi使ったことあるか?
Cマンセーの心揺らぐ出来だぞ
0305デフォルトの名無しさん
2006/03/17(金) 14:54:41はっきり言って気絶しそうなくらい汚い。
この点に関してDelphiのアドバンテージはない。
0306デフォルトの名無しさん
2006/03/17(金) 15:03:540307デフォルトの名無しさん
2006/03/17(金) 15:12:25同じユーザーとして心が痛むってことです
0308デフォルトの名無しさん
2006/03/17(金) 15:41:23unko1 = *unko2; がコンパイラで削除されないなら、時々 アクセスエラーが出るんでしょう
0309デフォルトの名無しさん
2006/03/17(金) 15:47:47ハードを直接叩けるような環境なら、それでいいと思うよ。
でも、アセンブラで
_ADR0 .equ 0
.global _ADR0
みたいにしておいて
extern volatile int _ADR0[];
として _ADR0[0] を使う方が綺麗だよね
0310デフォルトの名無しさん
2006/03/17(金) 16:50:09もともとpascal自体が、メモリ・ポインタ操作を是としない思想の言語
だからな。 ある意味嫌がらせ的な言語使用になっている。
0311デフォルトの名無しさん
2006/03/17(金) 16:57:360312デフォルトの名無しさん
2006/03/17(金) 17:12:410313デフォルトの名無しさん
2006/03/17(金) 17:17:38オブジェクトも、new 相当で作ってたけど、
いつの間にかclass型は出来るは、動的配列構文が出来るわで、ポインタは殆ど盲腸だな
0314デフォルトの名無しさん
2006/03/17(金) 17:19:57Delphiってもう終わり?
0315デフォルトの名無しさん
2006/03/17(金) 17:26:54よくわからんがpascalからobject pascalになっただけでは?
0316デフォルトの名無しさん
2006/03/17(金) 17:45:50メソッドポインタ = クラス+関数ポインタ
0317デフォルトの名無しさん
2006/03/17(金) 18:11:50ファンクタみたいなもん?
0318デフォルトの名無しさん
2006/03/17(金) 18:13:53それがヘジィズムw
あの人のバランス感覚はちょっと壊れてるから
何でも言語仕様の拡張で対応しようとする。
0319デフォルトの名無しさん
2006/03/17(金) 19:04:010320デフォルトの名無しさん
2006/03/17(金) 19:46:35http://www.genpaku.org/realprogrammerj.html
はFORTRAN ジョーク
ここはコッチでしょ
http://www.lysator.liu.se/c/bwk-on-pascal.html
ただ、Delphi等で拡張された文法ではこれらの批判は既に時代遅れとなっている
0321デフォルトの名無しさん
2006/03/17(金) 20:00:270322デフォルトの名無しさん
2006/03/17(金) 20:04:260323デフォルトの名無しさん
2006/03/17(金) 21:11:40そっかあ。言語自慢しちゃったのかあ。可哀想に。
0324ポインタ
2006/03/17(金) 21:14:180325デフォルトの名無しさん
2006/03/17(金) 21:37:24追えなくなるんじゃない?
0326デフォルトの名無しさん
2006/03/17(金) 21:42:29http://www.lysator.liu.se/c/bwk-on-pascal.html
2.1. The size of an array is part of its type
添字が型の一部なので、ソートとかする時に困ると書いてるけど 今ではオープン配列で解決してる。
さらに動的配列で帰値に可変サイズ配列でも渡せる
2.2. There are no static variables and no initialization
2.3. Related program components must be kept separate
2.4. There is no separate compilation
2.5. Some miscellaneous problems of type and scope
別に型を定義した同じ筈の配列とかに代入出来ないという事だけど・・・まあでもオープン配列なら受け取ってくれるからいいでしょ
if c in [blank, tab, newline] then ...は便利だけど、巨大な集合型で破綻するというのは難癖に思える
in は集合型だけでなく順序型にも使えるようになってるし
なんかDelphiはこの批判をかわす拡張をしてきたように思えるな
0327デフォルトの名無しさん
2006/03/17(金) 21:43:040328デフォルトの名無しさん
2006/03/17(金) 22:03:00Dがどう実現してるのかは知らないけど、C#だとfixedで固定する仕様に
なってるな。でもってこれがコスト高いんだorz
Cを原点0として、Javaを10とするなら、C++は2.5くらいでC#が5だと思っ
たんだけど、fixedのコストを考えるとどうも7.5くらいなんだよな。
C#のunsafeはあくまでネイティブとのインターフェイス用と割り切って使
うものくさい。
Dが上手く5のところに嵌ってくれるなら面白くなりそうなんだけどな。
0329デフォルトの名無しさん
2006/03/17(金) 22:03:13D言語とかでは、そういうキャストは未定義としてるみたいだよ
0330デフォルトの名無しさん
2006/03/17(金) 22:22:180331デフォルトの名無しさん
2006/03/18(土) 00:07:020332デフォルトの名無しさん
2006/03/18(土) 06:12:36Javaは氏ね
0333デフォルトの名無しさん
2006/03/18(土) 06:21:180334デフォルトの名無しさん
2006/03/18(土) 10:52:29Delphiには死活問題だからなぁ〜
0335デフォルトの名無しさん
2006/03/18(土) 12:14:39現実に目の前にその言語であげなきゃならない案件があるわけだからなぁ。
おっさん COBOLer もそう言ってました。
0336デフォルトの名無しさん
2006/03/18(土) 14:00:49手間はかかるが
0337デフォルトの名無しさん
2006/03/18(土) 14:05:55だから、論理型が必要な場面で他の型を書くと、論理型への隠れた型変換が働いているというように見るべきなのか
0338デフォルトの名無しさん
2006/03/18(土) 14:34:45_Boolは整数型の1種。intへの昇格が存在する。
0339http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 18:28:49もしくは64bitにネイティブ対応した置換ソフトないですか?
0340デフォルトの名無しさん
2006/03/18(土) 18:31:480341デフォルトの名無しさん
2006/03/18(土) 20:31:230342デフォルトの名無しさん
2006/03/18(土) 22:26:46でよくね?
0343デフォルトの名無しさん
2006/03/18(土) 23:24:42ところがどっこいC99ではきちんと組み込み型の一種。
<stdbool.h>でtypedef _Bool bool;とされていると言う具合。
0344デフォルトの名無しさん
2006/03/19(日) 10:30:40int * p = someintarray;
foo = p[1];
と
foo = *(p + 1);
では
どちらが機械語になった時に早いの?
同じ??
0345デフォルトの名無しさん
2006/03/19(日) 13:51:07使ってるマシンとコンパイラによって違うが、
大抵の場合は同一コードになると思う。
0346デフォルトの名無しさん
2006/03/19(日) 18:01:38int *foo; と
int foo[]; を
ごっちゃにして使う悪習慣は改善しれ。
0347デフォルトの名無しさん
2006/03/19(日) 18:12:32本質的に違うが同じように扱えるもんを同じように扱って何が悪いんだ?
お前頭固すぎ
0348デフォルトの名無しさん
2006/03/19(日) 18:16:20他の言語にパラダイムシフトした時に、わかるさ。
0349デフォルトの名無しさん
2006/03/19(日) 18:25:460350デフォルトの名無しさん
2006/03/19(日) 20:19:07具体的にどういう不都合があるか書いてよ。
納得したら考える。
0351デフォルトの名無しさん
2006/03/19(日) 21:23:40前者はfoo = 1[p];とも書けるので、どっちみち他の言語のような構文解析ではすまない。
従って、違うコードを出力するようなコンパイラを作る方がめんどくさい。
0352デフォルトの名無しさん
2006/03/19(日) 21:30:30はぁ?
コンパイラって、構文通りに解釈してコードを吐くんだよ?
オプティマイザかけても全く同じになるかどうか・・・気にはなるがな
0353デフォルトの名無しさん
2006/03/19(日) 21:55:42>351は端折りすぎだが。
要は、「配列」という特殊な構文はない。
従って、p[1]も*(p+1)も「pの値にsizeof intを足した値でポイントした中身」というような同じ構文と解釈するはずだ。
ということだろ。
0354デフォルトの名無しさん
2006/03/20(月) 00:19:02他の言語にパラダイムシフトした時に頭を切り換えられないバカは黙っとれ
0355デフォルトの名無しさん
2006/03/21(火) 00:18:33ヒント:移植
0356デフォルトの名無しさん
2006/03/25(土) 17:05:210357デフォルトの名無しさん
2006/03/25(土) 19:39:210358デフォルトの名無しさん
2006/03/25(土) 21:08:570359側近中の側近 ◆0351148456
2006/03/25(土) 21:13:05ポインタって言うからダメなんだよ。アドレスで。
0360デフォルトの名無しさん
2006/03/25(土) 21:35:42int * a; //生まれた
a = new int[4];
delete[] a; //死んだ
0361デフォルトの名無しさん
2006/03/25(土) 21:36:25いやそいつ一人を殺したところで開発が停止するとは限らないから
「おまえの開発したポインタが数十年後に人類を危機に陥れる」
「いやそんなまさか、俺はそんなつもりでポインタを開発したわけじゃ・・・」
「科学者はいつもそう言う。原爆を作った奴もそういった」
みたいなやり取りで味方に引き入れ、開発室ごと爆破。
その後、C厨がポインタを守るために未来から送り込んだ敵のアンドロイドと死闘を演じ
最後は親指をつきたてながら溶鉱炉に沈んでいく。
0362デフォルトの名無しさん
2006/03/25(土) 23:00:46無駄無駄w
0363デフォルトの名無しさん
2006/03/25(土) 23:03:58生まれる時が違うぜ? そこじゃ、まだ精子と卵子が出会ってないw
0364デフォルトの名無しさん
2006/03/25(土) 23:34:00システムの中の子でもOK
0365デフォルトの名無しさん
2006/03/25(土) 23:59:57うんにゃ ちげーよ
delete[] a; で死ぬのは、a = new int[4]; で生まれた int[4]; の方
a自体はまだ生きてるから、この後、 a = NULL; とかもできる。
ポインタってそんなもんさ。
0366デフォルトの名無しさん
2006/03/26(日) 01:27:55開発者が死ぬな。氏ぬじゃなく、死ぬな。
0367デフォルトの名無しさん
2006/03/26(日) 01:31:05ポインタ変数の変わりに整数型の変数を用意して
キャストしまくれ、ってことでおk?
0368デフォルトの名無しさん
2006/03/26(日) 01:35:04「乗算および文字列リテラル以外での'*'の使用を禁止する」みたいな。
0369デフォルトの名無しさん
2006/03/26(日) 02:34:55俺はそういう趣味はない。
猫ならできるけどな
0370デフォルトの名無しさん
2006/03/26(日) 03:51:54もしかするとC99なら何とかならんことはないかもしれない
が、ポインタを使うライブラリが一切使えないということになるから
やっぱり現実的ではないな・・・
0371デフォルトの名無しさん
2006/03/26(日) 03:54:27その時点ではまだ死んでないぞ、そのコードがある関数を抜けたら勝手に死ぬ
0372デフォルトの名無しさん
2006/03/26(日) 04:04:480373デフォルトの名無しさん
2006/03/26(日) 04:28:56添え字用の変数が増えるけど、まじめなプログラムなら
どうせ範囲チェックもしなきゃだからコスト的には
大して変わらんと思う。
0374デフォルトの名無しさん
2006/03/26(日) 11:33:130375デフォルトの名無しさん
2006/03/26(日) 11:41:330376デフォルトの名無しさん
2006/03/26(日) 17:38:31次回作はさらに進化したJava参照(美人)が相手です
0377デフォルトの名無しさん
2006/03/26(日) 18:05:07というわけで「ポインタン」に1票。
0378デフォルトの名無しさん
2006/03/26(日) 20:08:48今時なら遅くは無いな
その遅さが致命的になる条件なら
なんだってやってやるが、まずは
保守しやすいのが最優先だ
0379デフォルトの名無しさん
2006/03/26(日) 20:52:400380デフォルトの名無しさん
2006/03/26(日) 22:25:130381デフォルトの名無しさん
2006/03/27(月) 02:03:340382デフォルトの名無しさん
2006/03/27(月) 06:50:17ポインタ無しでどうやって関数使う?
0383デフォルトの名無しさん
2006/03/27(月) 06:51:28それは俺に対する宣戦布告だな?
ちなみにstrlenはストラレンではなくスターレンと読みます
0384デフォルトの名無しさん
2006/03/27(月) 07:02:09バッファ等でポインタを要求してるところには
ポインタ代わりに配列をつっこんでますよ
構造体なんかのを要求してるところは
まあしょうがないと割り切るけどさ。
要は心構えの問題だよ。
C++は知らん
0385デフォルトの名無しさん
2006/03/27(月) 07:06:440386デフォルトの名無しさん
2006/03/27(月) 07:14:25だが、その関数の定義にはどうしたってポインタが必要ですね
0387デフォルトの名無しさん
2006/03/27(月) 07:47:20呼び出すのは関数ではなく関数ポインタ。
渡すのは配列ではなく配列へのポインタ。
お前はポインタから逃れられていない。
0388デフォルトの名無しさん
2006/03/27(月) 07:49:12逃げてるんじゃないよ!
立ち向かっているんだ!
とか言ってみる。
0389デフォルトの名無しさん
2006/03/27(月) 11:14:21釣りなのか頭が悪いのか
0390デフォルトの名無しさん
2006/03/27(月) 11:47:520391デフォルトの名無しさん
2006/03/27(月) 11:54:320392デフォルトの名無しさん
2006/03/27(月) 12:35:30いや、仮想メモリを生成しアドレスを固定してポインタ演算w
0393デフォルトの名無しさん
2006/03/27(月) 13:08:110394デフォルトの名無しさん
2006/03/27(月) 14:41:41言わないの?
漏れは68000かじったぞ?
御蔭で8086嫌いがより一層深まったけどね(藁
0395デフォルトの名無しさん
2006/03/27(月) 23:29:57何が手ごろだろう
0396デフォルトの名無しさん
2006/03/27(月) 23:31:10どう考えてもアドレスじゃないし
0397デフォルトの名無しさん
2006/03/28(火) 00:34:06おまいはCが吐き出すアセンブラコードを見ないで育ったくちだな?
0398デフォルトの名無しさん
2006/03/28(火) 00:51:410399デフォルトの名無しさん
2006/03/28(火) 10:49:54BASICコンパイラなんて普通にあっただろ。
0400デフォルトの名無しさん
2006/03/28(火) 11:28:59DOS時代、又はそれ以前はBASICコンパイラーがあった
0401デフォルトの名無しさん
2006/03/28(火) 11:30:48>DOS時代、又はそれ以前はBASICコンパイラーがあった
それ以前のBASICコンパイラについて詳しく。
0402デフォルトの名無しさん
2006/03/28(火) 11:47:25Basic09 コンパイラを使っていました。
あ、でも Basic09 コンパイラは 6809 のネイティブ
には落とさなかったか。
0403デフォルトの名無しさん
2006/03/28(火) 11:56:50HSPみたいに中間コードを吐く形式でネイティブじゃない
だが、一部機種で徹底的に最適化されたコードを吐くコンパイラーが
ユーザーサイドで作られ開発されたりもしたが・・・
要はインタープリタ→中間コード生成→マシン語なんだけど、中間コード生成に掛かる時間が遅かったわけだ、
だから最初に中間コードにコンバートしておけば生成に掛かる時間を省ける
そして実行速度も上がる
勿論アセンブラで組まれた物には敵わなかったが・・・
0404デフォルトの名無しさん
2006/03/28(火) 12:17:370405デフォルトの名無しさん
2006/03/28(火) 14:04:42変に思う。
0406デフォルトの名無しさん
2006/03/28(火) 15:12:11CP/M 時代の MS BASIC-80 コンパイラが
確か Z80 ネイティブだったと思う。
0407デフォルトの名無しさん
2006/03/28(火) 15:30:550408デフォルトの名無しさん
2006/03/28(火) 17:18:25理解不能なコードを吐いてたのを覚えている。
Quick-Cのコードは単純明快だったのに、やはりBasicは
コンパイラ向きではないのかと思った。
でも確かBasicって、メインフレーム上のコンパイラ言語として
開発されたんだよな。インタプリタになったのはパソコンが初めて
らしいし。
0409デフォルトの名無しさん
2006/03/28(火) 17:19:11○QuickBasicをコンパイルした
orz
0410デフォルトの名無しさん
2006/03/28(火) 17:36:080411デフォルトの名無しさん
2006/03/28(火) 17:41:560412デフォルトの名無しさん
2006/03/28(火) 23:28:49ネストされるとやっぱり解らない・・・
0413デフォルトの名無しさん
2006/03/28(火) 23:43:120414デフォルトの名無しさん
2006/03/28(火) 23:48:23const int * p1;
int const * p2;
int * const p3;
0415デフォルトの名無しさん
2006/03/28(火) 23:48:330416デフォルトの名無しさん
2006/03/28(火) 23:58:01SORDのM5でBASIC-Gをいじってた俺は
整数型しか知りませんよ!
0417デフォルトの名無しさん
2006/03/29(水) 00:09:330418デフォルトの名無しさん
2006/03/29(水) 00:36:048ビット機の頃って整数型が大半じゃないの?
X68000のX-BASICは実数を扱う事が出来たけど・・・
0419デフォルトの名無しさん
2006/03/29(水) 00:42:21*をもう一つ増やしたりしたらわかめ
0420デフォルトの名無しさん
2006/03/29(水) 00:44:06下は変数intの定数ポインタ
0421デフォルトの名無しさん
2006/03/29(水) 01:18:39PC98のVRAMいじればポインタなんて一発なんだがw
どうしてもエミュレータ使った分厚い洋書になってしまう
0422デフォルトの名無しさん
2006/03/29(水) 01:28:380423デフォルトの名無しさん
2006/03/29(水) 02:24:280424デフォルトの名無しさん
2006/03/29(水) 02:39:29なんで?
0425デフォルトの名無しさん
2006/03/29(水) 02:43:260426デフォルトの名無しさん
2006/03/29(水) 03:28:590427デフォルトの名無しさん
2006/03/29(水) 06:36:01ポインタを引数に取りポインタを返す関数へのポインタの配列とかを
typedefを使わずに定義されてると一瞬うっととくるね。
自分の昔の(趣味の)ソースで時どきある。
書くときは頭の中にストーリー性があるので簡単なのだが、それをいきなり読み取るのはむずい。
0428デフォルトの名無しさん
2006/03/29(水) 08:25:09末期のPC-98はAT互換機とBIOSとサウスブリッジ(ISAのかわりにCバス)以外ほぼ互換。
で、そのNEC独自のサウス内蔵のIDEコントローラが酷い性能。
0429デフォルトの名無しさん
2006/03/29(水) 08:48:15typedef const int CINT;
typedef int *PINT;
CINT *p1, p2;
const PINT p3;
0430デフォルトの名無しさん
2006/03/29(水) 10:44:130431デフォルトの名無しさん
2006/03/29(水) 12:02:100432デフォルトの名無しさん
2006/03/29(水) 16:08:520433デフォルトの名無しさん
2006/03/30(木) 13:25:16N88-BASICの場合、DEFINT A-Zと宣言しないと整数型にならなかった。
あと、X1にdB-BASICってな整数型BASICがあったと思ったけど、
ゲーム専用てな具合にバカにされていたような・・・。
ま、乱数求めると1未満の実数が返って来た時代だからなあ。
0434デフォルトの名無しさん
2006/03/30(木) 13:35:36普通に i% とすれば整数型も使えますが何か。
#まさか、 % をつけないといけないなんて言わないよね。defstr sすれば s$≡sなわけだし。
0435デフォルトの名無しさん
2006/03/30(木) 21:54:55流れが読めてない
0436デフォルトの名無しさん
2006/03/32(土) 02:55:27それの先頭をポインタポインタポインタに入れるにはどうすれば良いですか?
0437デフォルトの名無しさん
2006/03/32(土) 03:12:13int **a[]; //ポインタへのポインタの配列
int ***b = a; //ポインタへのポインタへのポインタに代入
0438デフォルトの名無しさん
2006/03/32(土) 03:42:380439デフォルトの名無しさん
2006/03/32(土) 03:53:02char* s2[]={"lmn","opq","stu"};
char ** pp[2];
char *** ppp;
pp[0] = s1;
pp[1] = s2;
ppp = pp
って書くとpppとppが同じになってしまう
いったいどうすれば?
0440デフォルトの名無しさん
2006/03/32(土) 03:55:510441デフォルトの名無しさん
2006/03/32(土) 04:00:290442デフォルトの名無しさん
2006/03/32(土) 04:01:440443デフォルトの名無しさん
2006/03/32(土) 04:06:56ポインタ同士をつなぐのではなくて
代入したいのだ
char **pp
だけだと上手くいくのに配列にすると駄目
0444デフォルトの名無しさん
2006/03/32(土) 04:29:09coutで結果を表示する方を間違ってた
つまらないミス
0445デフォルトの名無しさん
2006/03/32(土) 18:23:180446デフォルトの名無しさん
2006/03/32(土) 19:17:510447デフォルトの名無しさん
2006/03/32(土) 19:20:05どこが難しいのかさっぱりわからん。
0448デフォルトの名無しさん
2006/03/32(土) 19:20:59つーかないと困る。
0450デフォルトの名無しさん
2006/04/02(日) 12:31:17文字列同じように表示すると
同じ型になるのに気付いた
0451デフォルトの名無しさん
2006/04/02(日) 13:09:531文字ならchar型
文字列ならchar*型だろこれ?
意外に単純?
0452デフォルトの名無しさん
2006/04/02(日) 13:41:47メモリ上に存在する文字列(メモリ上に存在する
一文字の文字が連続領域に配置されたもの)の
ポインタ(最初のアドレス)を入れるものだよ。
ここでは便宜上文字列と言ったが、Cでいう文字列とは
通常文字の並びの最後に'\0'があるものだが、
char*型には最後に'\0'がこない固定長の文字列の
最初のポインタも入れられることに注意。
またこのchar*型に入ったアドレスは文字列の最初のアドレスだが、
インクリメントすることで、次の文字のアドレスにすることも可能。
0453デフォルトの名無しさん
2006/04/02(日) 13:52:16char* っての見たら文字列の先頭アドレスだと思って良い?
あとインクリメントする時は&つけて+1してから*つけて戻さないといけないよね?
0454デフォルトの名無しさん
2006/04/02(日) 13:55:15上のレベルの型から指さないと
動かしたいそのものは指せないからだと思うんだけど
0455デフォルトの名無しさん
2006/04/02(日) 14:18:14ダメかもしれないけど俺はその認識でいいと思う
0456デフォルトの名無しさん
2006/04/02(日) 14:27:20&をつけてから+1して*で戻すと次の文字列に移動できたよ
0457デフォルトの名無しさん
2006/04/02(日) 14:31:52どうもアホっぽい匂いがするんだが・・
0458デフォルトの名無しさん
2006/04/02(日) 14:35:08それは理解しているようでとっても微妙な誤解をしている気がするので、
きちんとコードで書いて説明してみるといいと思う。
0459デフォルトの名無しさん
2006/04/02(日) 14:40:57*(&abc[0]+1)とabc[1]
が同じで
abc[0]+1はbcdefghi
って事>>457
0460デフォルトの名無しさん
2006/04/02(日) 14:49:12*(abc+1)で次の文字列に移るんじゃないの?
0461デフォルトの名無しさん
2006/04/02(日) 14:58:22それじゃ絵的に映えないだろ
0462デフォルトの名無しさん
2006/04/02(日) 15:56:430463デフォルトの名無しさん
2006/04/02(日) 15:58:030464デフォルトの名無しさん
2006/04/02(日) 15:58:22それだとエラーでた
0465デフォルトの名無しさん
2006/04/02(日) 16:03:41やってみたが少なくともBCCならエラー出ないぞ?
何使ってるんだ?
0466デフォルトの名無しさん
2006/04/02(日) 16:11:19多分
abcてのがabc[0]と等しいから+1で
アドレス+1(4かも)になってbcdefghiを指すポインタの中身
ポインタの中身を*で中身を取り出す事はできないからだと思われ
0467デフォルトの名無しさん
2006/04/02(日) 16:13:410468デフォルトの名無しさん
2006/04/02(日) 16:16:48でも実際に打ち込んだのはabcの方だから
多分合ってる
0469デフォルトの名無しさん
2006/04/02(日) 16:20:05*(abc+1)の型はchar*だよ?
0470デフォルトの名無しさん
2006/04/02(日) 16:23:15そりゃ(警告)でるよ。配列とポインタを混合するなって。
配列として定義しているのにポインタと混同して使うと混乱してバグ発生の
原因になるから使わないようにと警告を出す。というなら納得できるか?
>463のやり方がセオリーとしては正しいだろ?コマンドラインの参照(argvを参照する)も普通はそうするはずだし。
安易に参照使うなって事。この辺のは濫用すると混乱の元。
0471デフォルトの名無しさん
2006/04/02(日) 16:28:161>c:\documents and settings\auto\my documents\visual studio 2005\projects\hairetu\hairetu\hairetu.cpp(25) : error C2563: 仮パラメータ リストまたは関数へのポインタが、適合していません。
1>c:\documents and settings\auto\my documents\visual studio 2005\projects\hairetu\hairetu\hairetu.cpp(25) : error C2568: '<<' : オーバーロード関数のうち、どれを呼び出すのか決定できません。
エラーだぞ
0472デフォルトの名無しさん
2006/04/02(日) 16:31:49\ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ そんなエサで俺様がクマ――!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
(´⌒; (´⌒;;;
0473デフォルトの名無しさん
2006/04/02(日) 16:35:200474デフォルトの名無しさん
2006/04/02(日) 16:36:03そんなんで警告出すやつあんのか?
別にコマンドライン引数をchar **argvとして*(argv+1)とかargv[1]とかしても何も問題ないはずだと思うけど
>>473
括弧の数ぐらい数えてよ(´・ω・`)
0475デフォルトの名無しさん
2006/04/02(日) 16:46:45キタ━━━━ヽ(☆∀☆ )ノ━━━━!!!!
0476デフォルトの名無しさん
2006/04/02(日) 16:54:13打ち込みミスすまそ
0477デフォルトの名無しさん
2006/04/02(日) 17:07:23abcてのはabc[0]ってポインタのアドレスの事なの?
0478デフォルトの名無しさん
2006/04/02(日) 17:10:41C以外の言語でも 同じだって保証されてるの?
0479デフォルトの名無しさん
2006/04/02(日) 17:26:050480デフォルトの名無しさん
2006/04/02(日) 17:30:180481デフォルトの名無しさん
2006/04/02(日) 17:39:570482デフォルトの名無しさん
2006/04/03(月) 12:21:24なんで「*」なんだ?
だいたい「*」は乗算の演算子だろうが
「/*」と「*/」でコメントだと?割って掛けてどうしようってんだ
それとな「&」こいつも気に食わない
AND演算子の癖に他の意味で使うんじゃね〜
0483デフォルトの名無しさん
2006/04/03(月) 12:55:10よく見かけるようになるのかな。
0484デフォルトの名無しさん
2006/04/03(月) 13:52:36> プログラムの中で
> char* っての見たら文字列の先頭アドレスだと思って良い?
良い場合が殆どだとは思うがそうじゃない場合もあるので注意
0485デフォルトの名無しさん
2006/04/03(月) 16:03:52char* u = &u;
0486Visual C++ 2005 Standard Edition
2006/04/03(月) 16:46:08error C2440: '初期化中' : 'char **'から'char *'に変換できません。
0487デフォルトの名無しさん
2006/04/03(月) 17:23:00何がしたいねん、おまえ
0488デフォルトの名無しさん
2006/04/03(月) 17:44:19char* u = &unko;
u++;
u=''\0';
0489デフォルトの名無しさん
2006/04/03(月) 19:05:32だから、何がしたいねんおまえ。
その一バイトインクリメントした先のアドレスに
null文字いれたいんか?
あかんで。怒られるで。
0490デフォルトの名無しさん
2006/04/03(月) 19:12:33とやっておいて、>>488のような事をすると、あ〜ら不思議。kintamaが
'\0'になっちゃいました〜!ってな事も処理系によっては起きるかもな。
0491デフォルトの名無しさん
2006/04/03(月) 19:48:360492デフォルトの名無しさん
2006/04/03(月) 19:59:18最後の行が
u='\0';
なら問題ない。'\0' → 0に変換 → u にヌルポインタ代入。
0493デフォルトの名無しさん
2006/04/03(月) 20:02:15&uがchar**型
uがchar*型で
OK?
0494デフォルトの名無しさん
2006/04/03(月) 20:30:08{
for(int i=0;i<4;i++)
delete[] c[i];
}
char a ='a';
char *unko[] = {new char,new char[100],"aiueo",&a};
someImportantFunc((char**)unko);
0495デフォルトの名無しさん
2006/04/03(月) 20:31:23それは両辺とも同じ名前の変数("u")が入っている初期化だからエラーになるだけ。
よく考えれば分かるけどそれで通ったとすると無限悪循環になるから。
(&uがchar*****型でuがchar****型でもいいわけだし。)
これなら通る。
char** k = NULL;
char* u = &k;
>482
それを言い出したらASCII文字だけでは記号が足りないんだが。
単語の組み合わせ方で文の意味が変わるように、記号の組み合わせ方で
意味合いが変わるようにでもしないと無理な状態なんだし。
後は書き方次第。
0496デフォルトの名無しさん
2006/04/03(月) 20:35:390497デフォルトの名無しさん
2006/04/03(月) 21:00:14char* k = NULL;
char** u = &k;
ちなみに>495のもこうすれば通る。
char** k = NULL;
char* u = *k;
0498デフォルトの名無しさん
2006/04/03(月) 22:36:45char *** pointer ;
までしか役にたちそうもないね
0499デフォルトの名無しさん
2006/04/03(月) 23:34:480500デフォルトの名無しさん
2006/04/04(火) 02:31:16このポインタの指す先が、
http://pc8.2ch.net/test/read.cgi/tech/1141028162/1 って"アドレス"
中身が>>1の書いた文章。
みたいな説明ならわかるかなぁ?
0501デフォルトの名無しさん
2006/04/04(火) 09:22:580502デフォルトの名無しさん
2006/04/04(火) 10:57:350503デフォルトの名無しさん
2006/04/04(火) 11:33:41今まで書いたソースもできるかぎりポインタ渡しから参照渡しに書きなおしてます。^^
0504デフォルトの名無しさん
2006/04/04(火) 15:20:40つーことは、充分役に立ってるってこったな
0505デフォルトの名無しさん
2006/04/04(火) 19:02:43男なら黙ってポインタだろ
0506デフォルトの名無しさん
2006/04/04(火) 19:26:43そんな比喩使わんでもふつーに分かるやろーも
どうせ後でふつーに転換せなあかんわけやし
つーか、ポインタってむずいか?
なにがむずいのかオレにもわかるように説明してくれ
0507デフォルトの名無しさん
2006/04/04(火) 19:31:57**pと*pの区別がつかなくなるときがある
0508デフォルトの名無しさん
2006/04/04(火) 20:11:160509デフォルトの名無しさん
2006/04/04(火) 20:12:080510507
2006/04/04(火) 20:33:26違いはといえばその格納しているアドレスに何が入っているのか、ってことは分かるけど
どっちもポインタを格納しているってところで、感覚的に区別がつかなくなるんだよ
そういうときは当然図を描いて矢印引っ張っていって、
矢印の先の型がなんなのかちゃんと確認しながらやると分かる
慣れてる人は図なんて描かないでしょ?
0511507
2006/04/04(火) 20:41:49じゃなくて
int **pって宣言したときの p と *p の区別だ
0512デフォルトの名無しさん
2006/04/04(火) 20:59:14pはポインタのアドレス
*pはintのアドレス
と考えておけばいいんじゃね?
pにほかの型のポインタのアドレスを代入しようとしてもコンパイルエラーになるし。
0513507
2006/04/04(火) 21:10:47だから、p に入れるのか *p に入れるのかをよく迷う
0514デフォルトの名無しさん
2006/04/04(火) 21:21:15こう考えてみては?
int** p;
こう宣言しているとき、
p は int** 型
*p は int* 型
**p は int 型
(&p は int*** 型、となるかは怪しい。)
0515507
2006/04/04(火) 21:30:11そうかわかった。「どっちもポインタを格納している」って考えてるからだめなんだ
ポインタ型はポインタ型でも int** と int* があるわけで
「ポインタの先に何があるか」を考えてるからこんがらがってるんだ。たぶん
なんかヒントになった気がする。ありがとうです
0516デフォルトの名無しさん
2006/04/04(火) 21:32:28馬鹿でもわかるようにヒマツブシのついでにせつめいしてやろうか。
ここでポインタレベルという概念を導入する。以下の変数はそれぞれコメントのようなポインタレベルになる。
int A0;//ポインタレベル0。
int *A1;//ポインタレベル1。
int** A2;//ポインタレベル2。
これらのポインタレベルが異なる変数は互いに代入は不可能である。
代入したいときには、変数同士のポインタレベルを合わせてやらなければならない。
ここでポインタ演算にからむ演算子”*”と”&”、”[ ]”についてその意味を定義する。
*はポインタレベルを1下げる。
&はポインタレベルを1上げる。
hoge[n]はhogeの値にnだけプラスをしたものを新しく生成し、さらにポインタレベルを1下げる。→ *(hoge+n)
ただし配列生成時の new hoge[n]は別の意味である。これは単にhogeをn個生成する記述である。
つまりあるポインタレベルの変数をポインタレベルが異なる変数に代入するには、これらの演算子を使ってポインタレベルを同じにしてやればよい。
なおポインタレベルは0より小さくはならない。
A2 = &A1;//正しい。ポインタレベル1のA1のを&演算子でポインタレベルを1上げてポインタレベル2の変数に代入。
A2 = &A0;//間違い。A2に代入するにはポインタレベルが足りない。
A1 = *A2;//正しい。ポインタレベル2のA2に*演算子を使いポインタレベルを1下げているのでA1と同じポインタレベルである。
A0 = *A2;//間違い。A0よりA2のポインタレベルが1高い。
A1 = A2[1];//正しい。A2の値に1を加算してできたもののポインタレベルを1下げてA1に代入している。
ただし、この説明は構文的にエラーにならないようになるだけであり、文脈によってはメモリ破壊を起こす記述も有り得るので注意が必要である。
0517デフォルトの名無しさん
2006/04/04(火) 21:33:330518デフォルトの名無しさん
2006/04/04(火) 21:37:16すげーわかりやすい
05191
2006/04/04(火) 21:42:080520デフォルトの名無しさん
2006/04/04(火) 21:49:230521デフォルトの名無しさん
2006/04/04(火) 21:59:46ナイス
0522514
2006/04/04(火) 22:18:22理論として言いたいことは分かった。概念として捕らえるのはこの説明では無理。
理論の説明しかしてないから基本的な「概念」を理解してる奴にしか通じない。
そして言葉遣いが横柄で嫌味に感じる。
さらにいうなら>520の言い分では「概念を理解でき無い奴は付いてくるな」「概念の説明は不要」と言ってるようなもの。
算数だって最初は概念で教えるというのに。
0523デフォルトの名無しさん
2006/04/04(火) 22:22:020525デフォルトの名無しさん
2006/04/05(水) 00:20:52ちゃんと理解してる人が書いてくれてるのなら
いろんな説明のしかたを読むことはとても参考になる
というわけで勉強になりますた
0526デフォルトの名無しさん
2006/04/05(水) 00:57:570527デフォルトの名無しさん
2006/04/05(水) 06:46:230528デフォルトの名無しさん
2006/04/05(水) 11:18:19わかってない人に教えてるんではないな
いや,オレも教えきらんけどね
0529デフォルトの名無しさん
2006/04/05(水) 13:56:18保存した
0531デフォルトの名無しさん
2006/04/05(水) 20:13:530532デフォルトの名無しさん
2006/04/05(水) 21:47:240533デフォルトの名無しさん
2006/04/05(水) 22:17:17カナヅチでメモリを破壊すればいける。
ファイルポインタを考えて、HDDも破壊すれば全ておk。
0534デフォルトの名無しさん
2006/04/05(水) 22:22:58お前ちょっと署まで来てもらおうか
0535デフォルトの名無しさん
2006/04/05(水) 22:42:420536デフォルトの名無しさん
2006/04/05(水) 22:44:09ケツの穴みたいだし。
0537デフォルトの名無しさん
2006/04/06(木) 00:51:140538デフォルトの名無しさん
2006/04/06(木) 07:08:260539デフォルトの名無しさん
2006/04/06(木) 10:04:58となるからだめだと思うの
0540デフラグさん ◆mRgSYalFkQ
2006/04/06(木) 10:49:24となるからだめだと思うの
0541デフラグさん ◆mRgSYalFkQ
2006/04/06(木) 10:50:00[;゚д゚] シッパイシマシタ
/[_]ヽ
| |
………、、あうかだだっととなのめらるんブラ思汗ァァハハ
0542デフォルトの名無しさん
2006/04/07(金) 23:32:490543デフォルトの名無しさん
2006/04/08(土) 01:35:59つーか、それデフラグと違うし
0544デフォルトの名無しさん
2006/04/08(土) 10:42:42待て!
掛け算がやりにくくなる
0545デフォルトの名無しさん
2006/04/08(土) 11:18:01char (*)[]
肛門にしか見えん
0546デフォルトの名無しさん
2006/04/08(土) 11:28:33あったよね。
0547デフォルトの名無しさん
2006/04/08(土) 11:51:58なにこれ?
0548デフォルトの名無しさん
2006/04/08(土) 13:18:200549デフォルトの名無しさん
2006/04/08(土) 13:24:450550デフォルトの名無しさん
2006/04/08(土) 13:26:200551デフォルトの名無しさん
2006/04/08(土) 13:44:380552デフォルトの名無しさん
2006/04/08(土) 14:25:080553デフォルトの名無しさん
2006/04/08(土) 15:19:220554デフォルトの名無しさん
2006/04/08(土) 17:03:230555デフォルトの名無しさん
2006/04/08(土) 18:55:520556デフォルトの名無しさん
2006/04/08(土) 19:34:120557デフォルトの名無しさん
2006/04/08(土) 21:46:280558デフォルトの名無しさん
2006/04/08(土) 22:08:28>549
void*型は「ポインタの先は型指定なし」=「純粋にアドレスだけを格納する型」と考える。
0559デフォルトの名無しさん
2006/04/08(土) 22:30:580560デフォルトの名無しさん
2006/04/08(土) 22:39:10某C言語入門本によると
「void*型ポインタは要素のサイズを持っていないので、これらの計算は不可能であり、また意味もありません。」
だってさ。
0561デフォルトの名無しさん
2006/04/08(土) 22:54:201バイト進むとか変わらないとかを期待してたのに
0562デフォルトの名無しさん
2006/04/08(土) 23:13:03じゃあwalkは? そう、ウォーク。
だからmallocは正しくはモーロックだ。わかったね?
え? それはお前のことだって?
0563デフォルトの名無しさん
2006/04/08(土) 23:16:040564デフォルトの名無しさん
2006/04/09(日) 04:06:350565デフォルトの名無しさん
2006/04/09(日) 04:22:430566デフォルトの名無しさん
2006/04/09(日) 08:15:30世界を混乱に陥れることはできる
ビルなんか壊すより、よっぽど建設的だと思うな
0567デフォルトの名無しさん
2006/04/09(日) 16:49:230568デフォルトの名無しさん
2006/04/09(日) 17:00:49シーアロック
リアロック
0569デフォルトの名無しさん
2006/04/09(日) 17:01:540570デフォルトの名無しさん
2006/04/09(日) 18:40:140571デフォルトの名無しさん
2006/04/09(日) 20:46:560572デフォルトの名無しさん
2006/04/09(日) 21:26:30あろっち!
あろっち〜〜〜〜!
0573デフォルトの名無しさん
2006/04/09(日) 21:29:490574デフォルトの名無しさん
2006/04/09(日) 21:59:14に、128アロッチ
0575デフォルトの名無しさん
2006/04/09(日) 22:06:270576デフォルトの名無しさん
2006/04/09(日) 22:14:450577デフォルトの名無しさん
2006/04/09(日) 23:30:260578デフォルトの名無しさん
2006/04/10(月) 06:57:260579デフォルトの名無しさん
2006/04/10(月) 07:05:20母音oとaの読みが変わるのは 子音wのとき
それ以外は大体ローマ字読みで良い
0580デフォルトの名無しさん
2006/04/10(月) 07:14:400581デフォルトの名無しさん
2006/04/10(月) 09:40:09small
すまる?
0582デフォルトの名無しさん
2006/04/10(月) 09:58:36生きているとダングリング・ポインタになってバグの
温床になる。
そんな時は、ポインタ死ね。
0583デフォルトの名無しさん
2006/04/10(月) 10:34:420585デフォルトの名無しさん
2006/04/10(月) 11:25:23正確に発すると〔すまぉーる〕になるよ
0586デフォルトの名無しさん
2006/04/10(月) 11:54:53#oragmaで性能的に気になるところでは意図的にはずせるようになっているとより便利。
0587デフォルトの名無しさん
2006/04/10(月) 11:55:470588デフォルトの名無しさん
2006/04/10(月) 15:57:120589デフォルトの名無しさん
2006/04/10(月) 17:26:13わけだが...とまじレスしてみる。
JAVAなんて大っ嫌いだ。
0590デフォルトの名無しさん
2006/04/10(月) 19:23:020591デフォルトの名無しさん
2006/04/10(月) 20:23:30Cしか学んでない俺はがっくりきたよ
0592デフォルトの名無しさん
2006/04/10(月) 21:43:520593デフォルトの名無しさん
2006/04/10(月) 21:49:39え?
0594デフォルトの名無しさん
2006/04/10(月) 22:21:15Javaに無いのはポインタ演算。
0595デフォルトの名無しさん
2006/04/11(火) 14:19:21ってそれだったら普通の汎用プロセッサじゃん。
どうなん?
0596デフォルトの名無しさん
2006/04/11(火) 14:43:21そりゃあるだろうが
それと、Cでいうところのポインタと
何の関係が?
0597デフォルトの名無しさん
2006/04/11(火) 14:51:480598デフォルトの名無しさん
2006/04/11(火) 19:35:41「いやバイトコードの中にはある」とか言う人初めて見た。
0599デフォルトの名無しさん
2006/04/12(水) 11:20:40意図的ミスリードかただの○○かは知らんけど
0600デフォルトの名無しさん
2006/04/12(水) 14:14:06「ぬるぽ」が産まれたわけで、そういう○○も世の中には必要だな。
0601デフォルトの名無しさん
2006/04/12(水) 16:15:070602デフォルトの名無しさん
2006/04/12(水) 22:14:46みたいなくだらない質問がくるかもよ。
0603デフォルトの名無しさん
2006/04/12(水) 23:00:53Λ_Λ \\
( ・∀・) | | ガガガッ
と ) | | 人
Y /ノ .人 < >__Λ∩
/ ) .人 < >__Λ ∩Д´)/
_/し' < >_Λ∩Д´)/ / ←>>600
(_フ彡 V`Д´)/ / ←>>601
/ ←>>602
0604デフォルトの名無しさん
2006/04/12(水) 23:57:040605デフォルトの名無しさん
2006/04/13(木) 00:59:27殴られるに決まっておろうが
Javaにはポインタはないんだからよぉ
0606デフォルトの名無しさん
2006/04/13(木) 07:02:020607デフォルトの名無しさん
2006/04/13(木) 07:08:010608デフォルトの名無しさん
2006/04/13(木) 12:52:15お前さんは>598からの流れを読んでないのかい?
0609デフォルトの名無しさん
2006/04/13(木) 14:06:560610デフォルトの名無しさん
2006/04/13(木) 16:42:32てっきりtinyintかと思ってた
0611デフォルトの名無しさん
2006/04/13(木) 19:22:190612デフォルトの名無しさん
2006/04/13(木) 20:18:030613デフォルトの名無しさん
2006/04/13(木) 20:50:370614デフォルトの名無しさん
2006/04/13(木) 22:12:29ぼくはわるいポインタじゃないよ。
0615デフォルトの名無しさん
2006/04/13(木) 23:35:26よろしいですか?
0616デフォルトの名無しさん
2006/04/14(金) 06:56:140617デフォルトの名無しさん
2006/04/14(金) 11:36:580618デフォルトの名無しさん
2006/04/14(金) 11:53:46ドラクエで言わなくても「諸刃の剣」だな。
0619デフォルトの名無しさん
2006/04/14(金) 13:38:110620デフォルトの名無しさん
2006/04/14(金) 18:14:260621デフォルトの名無しさん
2006/04/14(金) 19:04:010622デフォルトの名無しさん
2006/04/16(日) 00:10:030623デフォルトの名無しさん
2006/04/16(日) 19:27:180624デフォルトの名無しさん
2006/04/16(日) 19:45:530625デフォルトの名無しさん
2006/04/16(日) 21:33:210626デフォルトの名無しさん
2006/04/16(日) 22:59:360627デフォルトの名無しさん
2006/04/17(月) 06:51:06ポインタは永遠の32歳です><
0628デフォルトの名無しさん
2006/04/17(月) 07:17:58一つのアプリにとっては32bitのメモリ空間で十分だな
32bit仮想マシンが沢山作れるというシステムで PCの世界の最終形態はこうでしたで、いいんじゃないの?
この上は人工知能様の登場を待って、その方向性(たぶんポインタが無い世界)に移動だろ
0629デフォルトの名無しさん
2006/04/17(月) 18:48:17動画編集とかだと、全然たりませんけど。
0630デフォルトの名無しさん
2006/04/17(月) 19:58:03>>628は仮想メモリを知らんのだろ。
それよか、今まで32bitだった可変長引数がいつ移行されるのかが気になる。
0631デフォルトの名無しさん
2006/04/17(月) 20:05:23printfにdoubleわたせなかったのか?
0632デフォルトの名無しさん
2006/04/17(月) 20:17:01そういう話?
0633デフォルトの名無しさん
2006/04/17(月) 21:52:25可変長引数いつもどうやって調べてんだよ。
0634デフォルトの名無しさん
2006/04/17(月) 22:06:420635デフォルトの名無しさん
2006/04/17(月) 22:16:060636デフォルトの名無しさん
2006/04/17(月) 22:21:32今みたいな馬鹿でかいデータを扱うわけでもなく、プログラム本体も小さく、シンプル(悪く言えば低機能)だった時代の話。
>635
16GBって、何を処理させるつもりだ?
0637デフォルトの名無しさん
2006/04/20(木) 13:42:40これをベクタラスタ変換しようと思うと100μm程度のスライスにしてもあっさり1GBの8ビット諧調画像になるね。
隣のスライスとの整合性を取ろうとすると、更に倍。そいつをフィルタリングすると更に倍。
こういう応用だと4GBでも足りないなんて話が現実問題としてごろごろしている。
0638デフォルトの名無しさん
2006/04/20(木) 13:55:340639デフォルトの名無しさん
2006/04/20(木) 14:11:22つまり、世の中間違いだらけだと?
光の波長程度の解像度が必要になると、どうしても光の回折などを考慮する必要が出るのだが。
0640デフォルトの名無しさん
2006/04/20(木) 19:04:45既存業務やアプリがどんどんでかく重くなるのは納得いかんなぁ
0641デフォルトの名無しさん
2006/04/20(木) 19:11:29#厳密には二分化か。
オフィスソフトは?
0642デフォルトの名無しさん
2006/04/20(木) 20:10:33>638の言うとおりだよ。
まさかとは思うけどさULSIクラスのIC製造用の回路パターン(しかもダイ1個分じゃなくてウェハ1枚分)を全部オンメモリ処理させようとか
無茶な条件想定してない?(それじゃ10年以上も前のVLSI製造はどうやってたんだよ、ってことになるが。)
普通そういうのはプロッタ(専用のものかもしれない)で描いた上でカメラワークで縮小するべきじゃないか?
>光の回折などを考慮
そういうのは光学機器メーカーの腕の見せ所。PCには関係ないだろ。
ともかく、そんな異常に高い量子化精度のデータをPCで一括して扱おうとすること自体が間違い。
>641
アプリ屋の目論見がそういう方向に向かう限りなんだかんだで重くなり続ける。馬鹿みたいに機能が増え続けるだけ。結局全機能使いこなす意味もなくなる。
0643デフォルトの名無しさん
2006/04/20(木) 22:38:360644デフォルトの名無しさん
2006/04/21(金) 01:18:45まさかと思うのだろうけど、>637規模の話は実際転がっているよ。
間違いだろうがなんだろうが、実際あるんだから仕方がない。
生半可な知識で想像してないで、自分の知らない世界もあるんだと納得しておいたほうがいいよ。
0645デフォルトの名無しさん
2006/04/21(金) 01:27:540646デフォルトの名無しさん
2006/04/21(金) 01:36:570647デフォルトの名無しさん
2006/04/21(金) 02:20:030648デフォルトの名無しさん
2006/04/21(金) 03:14:550649デフォルトの名無しさん
2006/04/21(金) 17:44:14そこで勘ピューターですよ
0650デフォルトの名無しさん
2006/04/21(金) 22:41:02ttp://www.asahi.com/science/news/TKY200604200229.html
ありえないほどリソース食うみたいですね
0651デフォルトの名無しさん
2006/04/22(土) 11:31:32>光の波長程度の解像度が必要になると、どうしても光の回折などを考慮する必要が出るのだが。
→手法自体が間違いである事を否定している。
>間違いだろうがなんだろうが、実際あるんだから仕方がない。
→手法自体が間違いである可能性を認めている。
0652デフォルトの名無しさん
2006/04/22(土) 11:42:25先日、俺のパソコンで「いもうとシミュレータ」を作ってやろうと思ってさ。
いろいろ調べたんだけど、
何か、人間の体の細胞って 100 兆個以上もあるんだって?
この時点で、既に4GBに入らないよな。
確かに、この規模の話は実際転がっているよ。
自分の知らない世界もあるんだと実感したね。
0653デフォルトの名無しさん
2006/04/22(土) 12:09:50知ってる世界より知らない世界のほうが圧倒的に多いに決まってる
0654デフォルトの名無しさん
2006/04/22(土) 12:30:400655デフォルトの名無しさん
2006/04/22(土) 14:26:19何言ってるんだ
俺の知らない世界の存在など俺の世界には無関係だ
0656デフォルトの名無しさん
2006/04/22(土) 22:28:28>>間違いだろうがなんだろうが、実際あるんだから仕方がない。
>→手法自体が間違いである可能性を認めている。
間違い。単に実在することを述べているに過ぎない。
0657デフォルトの名無しさん
2006/04/22(土) 22:30:51最初は1個なんだから、1個から4GBに入る限界までで楽しめばいいよ。
0658デフォルトの名無しさん
2006/04/23(日) 02:58:52それはまずいだろ
せめて胎ン中から出るとこまではいかねーと
0659デフォルトの名無しさん
2006/04/23(日) 06:23:460660デフォルトの名無しさん
2006/04/23(日) 09:45:24>間違い。単に実在することを述べているに過ぎない。
普通、「述べているに過ぎない」文章のお尻には
「仕方がない」などという言葉は付かないと思うが?
0661デフォルトの名無しさん
2006/04/23(日) 15:16:120662デフォルトの名無しさん
2006/04/24(月) 17:40:190663デフォルトの名無しさん
2006/04/24(月) 20:04:03ケイソウ乙
0664デフォルトの名無しさん
2006/04/25(火) 01:40:59アオミドロ乙
0665デフォルトの名無しさん
2006/04/26(水) 10:36:23しかし、128ビット浮動小数点レジスタが実装されるわけじゃないから高精度の技術計算が
PCの仕事になるわけじゃない。しかし、8086+8087が後に統一されたように、浮動小数点
レジスタもパワーアップされるのも時間の問題だと思う。
そうなってくれたら、俺は定年後も自宅で研究ができるわけだが...
0666デフォルトの名無しさん
2006/04/26(水) 10:38:400667デフォルトの名無しさん
2006/04/26(水) 11:05:290668デフォルトの名無しさん
2006/04/26(水) 13:23:540669デフォルトの名無しさん
2006/04/26(水) 17:11:17こんな感じ。
#include "stdafx.h"
#include<windows.h>
//---------------------------
void f(char*& p)
{
p = new char[256]; // <--- この p は、main の pm を参照してる(同じ)
lstrcpy(p, "abc\n");
}
//---------------------------
void f2(char* p)
{
p = new char[256]; // <--- この p は、main の pm と別物(f2の中だけで有効)
lstrcpy(p, "abc\n");
}
//---------------------------
int main(int argc, char* argv[])
{
char* pm = NULL;
f(pm); // 参照タイプ
printf(pm); // <--- pmのなかに、f のなかで確保したメモリのアドレスが入ってる。
delete pm;
pm = NULL;
f2(pm);
printf(pm); // <--- pmのなかには、NULLがはいってるからエラー。
delete pm;
return 0;
}
void f(char*& p) の場合は、pm自体のアドレスが渡されて、
void f(char* p) の場合は、pmの中身が渡される。
0670デフォルトの名無しさん
2006/04/26(水) 17:29:18ここが質問スレに見えるかい?
0671デフォルトの名無しさん
2006/04/26(水) 17:34:43なろほど。
ありがとうございました。
>>670
氏ね
0672670
2006/04/26(水) 17:41:040673デフラグさん ◆mRgSYalFkQ
2006/04/26(水) 17:41:47[゚д゚] デフラグカンリョウ
/[_]b
| |
066679>>>>。。あいうがござしたとどなねほまりろ氏
0674デフォルトの名無しさん
2006/04/26(水) 18:38:19自分で多倍長実数演算すればいいんじゃね?
0675デフォルトの名無しさん
2006/04/26(水) 21:06:330676デフォルトの名無しさん
2006/04/26(水) 22:24:580677デフォルトの名無しさん
2006/04/26(水) 22:25:06早く定年になるといいですね
あ、でも、投稿を読む限りではその前に整理されるかな?
よかったですね。
0678デフォルトの名無しさん
2006/04/26(水) 22:48:25これで納得せずに、ちゃんと調べたほうがいいよ。
ttp://www.med.osaka-u.ac.jp/pub/cl-comp/saito/cppintro/cppintro11.html
0679デフォルトの名無しさん
2006/04/27(木) 00:40:440680デフォルトの名無しさん
2006/04/27(木) 05:48:100681デフォルトの名無しさん
2006/04/27(木) 07:02:39将来連想記憶へのアクセスが1サイクルで出来るようになれば
今のように変数名をコンパイルして特定のアドレス値として解消するのではなく
変数名そのままが扱えるようになるかもしれない。
そうなれば、参照渡しもアドレスではなく 変数名を渡すようになるだろう
0682デフォルトの名無しさん
2006/04/27(木) 07:41:23きちんと使えない馬鹿が多いから敬遠されている。
0683デフォルトの名無しさん
2006/04/27(木) 07:58:54浮動小数点で何が困るわけ?
え? 0.1? 0.1を使うなら最初から10倍しておけよ
0684デフォルトの名無しさん
2006/04/27(木) 08:28:29クラスに格納し、そのポインタをlistとかvectorの要素にして、楽してる。
メモリマップもイメージしやすいし。
0685デフォルトの名無しさん
2006/04/27(木) 09:06:56そんな使い勝手の悪いメモリーマップ嫌だ。
0686デフォルトの名無しさん
2006/04/27(木) 10:54:59全ビットフルに使わず、演算速度も劣る形式を選択するわけですか。
0687デフォルトの名無しさん
2006/04/27(木) 11:07:33使えないジャン
0688デフォルトの名無しさん
2006/04/27(木) 13:08:020689デフォルトの名無しさん
2006/04/27(木) 14:24:090690デフォルトの名無しさん
2006/04/27(木) 15:05:49そういう使い方ならJavaも同じというか、Javaはそれしかできない。
Javaの変数ってC++で言うところのshared_ptrだから、
ArrayListやVectorの要素は常にポインタ。
0691デフォルトの名無しさん
2006/04/27(木) 17:25:19これのさ
>「見るだけや から貸せ。」と言われてもその保証が無い場合、全面的に信用できないのと同 じです。
とか書いてるけどさ、
C++のプログラミングって、なんか外から編集できないなんかとか、
オブジェクトに対するアクセス権をやたら制限したりするけど、
あれって、自分の作るプログラムで、自分が分かって作ってんのに、なんで制限とかしなくちゃいけないの?
見るだけだったら見るだけって分かってるんじゃないの?
なんか意味が有るのかさっぱりわからん。
0692デフォルトの名無しさん
2006/04/27(木) 17:32:40お前はカプセル化から勉強しなおせ
0693デフォルトの名無しさん
2006/04/27(木) 18:00:13一人で短時間で作ってるのなら必要ない機能だね。
複数でやってる時や、将来の自分の為、というか酷い事になった事が常であった経験から作られた機能。
もっとも、触りたくなったら好きなようにソース弄られる状態だと意味ないわけだけどね
0694デフォルトの名無しさん
2006/04/27(木) 19:37:42…ぅゎぁ。
そこ、参考にしない方がいい。
| 参照型変数を使うメリットを考えてみましょう。結論から言いますと
|
| * オブジェクトのコピーをとることなく、オブジェクトの実体を関数に渡せる。
| * const修飾子を付けることで、カプセル化をより強力にできる。
|
| の二点に尽きます。
ポインタでも同じ。
| オブジェクトのポインタが渡されてしまうと関数の内部で自由にオブジェクトにアクセスできますから
| 関数内での Read Onlyを保証することができません。
大嘘。
void func(const A* ra);
とすると、func 内で ra が指すインスタンスは変更できない。
| (教訓) 「参照型変数は仮引数の宣言でconstと共に用いるべし。」
参照の使いどころは関数の引数に限らないし、const である必要もない。
| ローカルでないオブジェクト(静的領域にあるオブジェクト)は、関数が終了しても消滅しないので
| その参照を関数が返すことが可能になります。
| こういった、オブジェクトを関数内で生成するには、後述の newキーワードを使います。
一体、どういう理解をしているのかが理解不能。
0695デフォルトの名無しさん
2006/04/27(木) 20:00:54更に言えば、「こういった」が掛かるのは何か判らなくなっている。
オブジェクトを指したいのであればそこに読点を挟んではいけない。
こういった文章を書く輩は大抵、物事をきちんと理解しないまま語る傾向がある。
まさしくその典型のようで、他のページにも同様の誤解があるようだ。
0696デフォルトの名無しさん
2006/04/28(金) 03:33:12>>678の意図がわからん
0697デフォルトの名無しさん
2006/04/28(金) 23:30:500698デフォルトの名無しさん
2006/04/29(土) 19:44:580699デフォルトの名無しさん
2006/05/01(月) 03:36:050700デフォルトの名無しさん
2006/05/01(月) 08:31:43信じていたのだが。
ttp://mag.autumn.org/Content.modf?id=20050426135941
0701デフォルトの名無しさん
2006/05/01(月) 13:10:49例えばアメリカ人C/C++ユーザの多くはキリスト教徒かマホメット教徒だ。
0702デフォルトの名無しさん
2006/05/01(月) 13:18:130703デフォルトの名無しさん
2006/05/01(月) 13:20:55その話の持って行き方は明らかにおかしい。
0704デフォルトの名無しさん
2006/05/01(月) 13:32:390705デフォルトの名無しさん
2006/05/01(月) 20:31:35C++信者というより、C#信者が現実に負けて棄教したって感じに取れるけど。
俺、この人のC#本持ってるわ。
0706デフォルトの名無しさん
2006/05/01(月) 22:25:410707デフォルトの名無しさん
2006/05/02(火) 22:20:04したら勉強する気になるかも。
0708デフォルトの名無しさん
2006/05/03(水) 01:00:13(゚∀( * )
↑こんなのどうだ? アスタリスクを使ってることでポインタのイメージに合うし、かわいいぞ。
0709デフォルトの名無しさん
2006/05/03(水) 10:04:421 :名無しさん@お腹いっぱい。:02/07/17 11:35 ID:rKM798Cx
( )
ノ( * )ヽ
ノωヽ
2 :名無しさん@お腹いっぱい。:02/07/17 11:39 ID:ORWCZ4de
>>1
がんばって生きろ・・・
3 :名無しさん@お腹いっぱい。:02/07/17 11:44 ID:kIN8F5jW
>>1
死ぬな・・・
0710デフォルトの名無しさん
2006/05/09(火) 20:18:50デコに '*' と入れてなかったっけ?
0711デフォルトの名無しさん
2006/05/10(水) 12:55:140712デフォルトの名無しさん
2006/05/10(水) 18:10:030713デフォルトの名無しさん
2006/05/10(水) 18:33:200714デフォルトの名無しさん
2006/05/10(水) 22:21:080715デフォルトの名無しさん
2006/05/10(水) 23:02:150716デフォルトの名無しさん
2006/05/11(木) 10:20:13つのだ☆ひろ
0717デフォルトの名無しさん
2006/05/12(金) 04:42:340718デフォルトの名無しさん
2006/05/12(金) 19:37:560719デフォルトの名無しさん
2006/05/12(金) 22:04:49≡≡
二等陸佐
0720デフォルトの名無しさん
2006/05/12(金) 22:29:15無茶しやがって…
0721デフォルトの名無しさん
2006/05/13(土) 17:14:49わけわからん
0722デフォルトの名無しさん
2006/05/13(土) 19:14:200723デフォルトの名無しさん
2006/05/13(土) 19:14:52実はインターフェースでつながっていてそのインターフェースうおおおおおお
0724デフォルトの名無しさん
2006/05/13(土) 20:39:420725デフォルトの名無しさん
2006/05/13(土) 21:11:220726デフォルトの名無しさん
2006/05/13(土) 21:48:570727デフォルトの名無しさん
2006/05/13(土) 22:30:14抽象クラスとの区別が付きにくい感じがするのが俺は好きでない。
0728SOURCE ◆tAo.kQ2STk
2006/05/14(日) 00:56:43自分で作れ。
俺は計算速度を限界まで高められる言語作ってる。
今の所、「活発的ななんとか」っていうソフトから作られる奴の二十数倍はスピード出る。はず。論理上。
0729デフォルトの名無しさん
2006/05/14(日) 10:27:100730デフォルトの名無しさん
2006/05/15(月) 09:37:40PureBasic
0731デフォルトの名無しさん
2006/05/15(月) 10:29:140732デフォルトの名無しさん
2006/05/15(月) 19:58:510733デフォルトの名無しさん
2006/05/17(水) 21:12:53下を見たらきりがないからな。
アセンブラの二十数倍ならスゲェと思う。(どうやってやるかは知らんが)
0734デフォルトの名無しさん
2006/05/17(水) 21:52:39GPU上で動くシェーダー言語とか?
0735デフォルトの名無しさん
2006/05/18(木) 01:33:47HDL言語なら可能だお^^
0736デフォルトの名無しさん
2006/05/18(木) 05:38:35動作周波数100MHzのFPGAのHDLとでは
どちらが高速に動作しますか?
0737デフォルトの名無しさん
2006/05/18(木) 05:41:220738デフォルトの名無しさん
2006/05/18(木) 05:55:450739デフォルトの名無しさん
2006/05/18(木) 09:29:510740デフォルトの名無しさん
2006/05/21(日) 04:38:34やろうが、結局挫折する・・・と思う
0741デフォルトの名無しさん
2006/05/21(日) 04:46:09そんな徹夜明けの朝。
0742デフォルトの名無しさん
2006/05/21(日) 10:52:020743デフォルトの名無しさん
2006/05/21(日) 18:13:20Cのポインタは最初は良く分からなかったけど,
Javaで参照渡しとかに慣れてからまたCをやったら理解できるようになったよ.
0744デフォルトの名無しさん
2006/05/22(月) 00:24:02ポインタ理解出来たくらいで
そこまで言い切っちゃう奴も同様ではないかと。
0745デフォルトの名無しさん
2006/05/23(火) 03:27:220746デフォルトの名無しさん
2006/05/23(火) 03:30:130747デフォルトの名無しさん
2006/05/23(火) 03:45:430748デフォルトの名無しさん
2006/05/23(火) 04:04:54日 本 語 で お k 。
0749デフォルトの名無しさん
2006/05/23(火) 07:14:35char *p1;
int *p2;
p1++
と
p2++
の違いが分かってないとか?
0750デフォルトの名無しさん
2006/05/23(火) 08:22:06光学マウスのポインタがぷるぷるする人あつまれ〜!!
http://pc7.2ch.net/test/read.cgi/pc/1111122069/l50
0751デフォルトの名無しさん
2006/05/24(水) 00:01:300752デフォルトの名無しさん
2006/05/24(水) 00:02:560753デフォルトの名無しさん
2006/05/24(水) 00:10:26これ使え
鏡の上でもポインタがぶれないから
0754デフォルトの名無しさん
2006/05/24(水) 05:17:010755デフォルトの名無しさん
2006/05/31(水) 17:12:350756デフォルトの名無しさん
2006/06/01(木) 05:39:11Cの宣言ていうのは、基本的に、
A B;
って形で書かれて、
「Bの型がAになるようにBの中の未知のもの宣言」って意味になる。
例を挙げると、
int a; // a : int になるように a を宣言 → a : int
int *b; // *b : int になるように b を宣言 → b : pointer to int
int c[10]; // c[i] : int → c : array of int
const int *d; // *d : const int → d : pointer to (const int)
// dは書き換えられるけど、*dはconstだから書き換えられない
int *const e; // *(const e) : int → const e : pointer to int
// eはconstだから書き換えられないけど、*eは書き換えられる
int f(char); // f(char) : int → f : char を受け取って int を返す関数
int (*g)(char); // (*g)(char) : int → *g : char から int への関数 → g pointer to: 関数
こんな感じ。
てかこれ、K&Rに書いてあるよな。
0757デフォルトの名無しさん
2006/06/01(木) 07:01:200758デフォルトの名無しさん
2006/06/01(木) 16:11:050759デフォルトの名無しさん
2006/06/01(木) 22:09:37ハンク・アーロンだよね
王なんて向こうでは参考記録程度の扱い
0760デフォルトの名無しさん
2006/06/02(金) 09:58:05一見して読む気が失せる
0761デフォルトの名無しさん
2006/06/03(土) 22:50:14int型へのポインタっていう言い方が正しい理由が分かりますえん。
0762デフォルトの名無しさん
2006/06/04(日) 03:47:50イント型のポインタ void *Ptr; int iPtr = reinterpret_cast<int>(Ptr); つまり、int型に詰め込んだポインタ
イント型へのポインタ int i; void *Ptr = reinterpret_cast<void*>(&i); つまり、int型のなにがしを指してるポインタ
って事じゃねえか? 前者はint型とアドレス空間が同一サイズの環境でしかムリな書き方だけどなw
0763デフォルトの名無しさん
2006/06/06(火) 08:11:210764デフォルトの名無しさん
2006/06/06(火) 08:20:47const char *a;
の区別がよくわかりません。
どう違うのかはよくわかっているのですが、
いつもどっちがどっちだっけ?と悩みます。
分かりやすい覚え方ないでしょうか?
0765デフォルトの名無しさん
2006/06/06(火) 08:42:45>どう違うのかはよくわかっているのですが、
その2つはどう見ても同じだし、よくわかってない。
* の右にあれば、a (ポインタ) が書き換え不可。
char * const a;
* の左にあれば、*a (ポインタが指す中身) が書き換え不可。
const char *a;
char const *a;
つか、「変数名から外に向かって読む」って原則通りなんだが。
0766デフォルトの名無しさん
2006/06/06(火) 10:05:38どう見ても同じものです。
本当にありがとうございました。
0767デフォルトの名無しさん
2006/06/26(月) 23:31:420768デフォルトの名無しさん
2006/06/27(火) 00:35:11何が別なんだ?
#まさかとは思うが、char const * aとconst char * aが別だなんて言わないよな。
0769デフォルトの名無しさん
2006/06/27(火) 10:15:16すまんケータイからで流れ読めてなかった
0770デフォルトの名無しさん
2006/06/27(火) 22:11:340771デフォルトの名無しさん
2006/06/30(金) 00:54:010772デフォルトの名無しさん
2006/07/18(火) 00:41:170773デフォルトの名無しさん
2006/07/18(火) 12:32:310774デフォルトの名無しさん
2006/07/18(火) 17:50:57typedef BOOL (*unko)(viod)
になじめない
0775デフォルトの名無しさん
2006/07/18(火) 18:06:310776デフォルトの名無しさん
2006/07/19(水) 02:52:21ポインタのポインタのほうが判りやすいと思うのだが。
0777デフォルトの名無しさん
2006/07/19(水) 03:14:180778デフォルトの名無しさん
2006/07/23(日) 12:57:11確かにviodにはなじめないな
0779デフォルトの名無しさん
2006/07/23(日) 22:12:49test
0780デフォルトの名無しさん
2006/07/23(日) 22:14:09test
0781デフォルトの名無しさん
2006/07/23(日) 22:55:170782デフォルトの名無しさん
2006/07/24(月) 20:19:37typedefしてるかも知れないじゃないか。
0783デフォルトの名無しさん
2006/07/24(月) 20:41:13なんで関数ポインタがBOOLになるんですか?
0784デフォルトの名無しさん
2006/07/24(月) 22:48:51それは、BOOL型を返す、viod型を引き数に持つ関数ポインタをunkoとtypedefしているのだ。
>>782
馴染めないだろ。
0785デフォルトの名無しさん
2006/07/25(火) 02:35:09BOOL implemented_unko(void)
{
return 783 == unko;
}
int main(void)
{
unko f;
f = implemented_unko;
fprintf(stdout, "%d", f());
return 0;
}
0786デフォルトの名無しさん
2006/07/25(火) 03:13:05「オブジェクトごと渡してメンバ関数呼んだほうが良くありませんかw」
0787デフォルトの名無しさん
2006/07/26(水) 21:32:43面倒起こすとうざいから、「この関数に a, b, c という引数を入れるんですよ(b は変数のポインタを入れる)」と教えてやった。
そいつは関数の定義を無視して b, c, a を入れてエラーが出るとか抜かしてきた(当然エラーと警告の違いも分かっていない)。
「定義に従って順番どおりに入れて下さいね(^^;」。またエラーが出るとか抜かしてきやがった(警告だって!!!!)。
「定義ちゃんと見てますか?(^^; ポインタを渡すんだから & 付けなければいけないんですよ?」
DQN「へー、じゃあこの * とかは付けなくていいの?」 <- 教科書を読んでない事を確信させる一言
そんなんで後期の数値解析とか出られると困るから教科書嫁、出来ないんだったら光の速さで氏ね!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0788デフォルトの名無しさん
2006/07/26(水) 22:33:37そのかわりテンプレート絡みでコンパイルエラーになると
コンパイラのメッセージがニャントロ星人の言語みたいになる諸刃の剣
0789デフォルトの名無しさん
2006/07/26(水) 22:34:520790デフォルトの名無しさん
2006/07/26(水) 22:43:00さらにその変数を入れる入れ物があるなんて!
ポインタを作った人はマゾか基地外です。
0791デフォルトの名無しさん
2006/07/26(水) 22:57:38あんたの頭はキャベツか。
0792デフォルトの名無しさん
2006/07/26(水) 23:53:140793デフォルトの名無しさん
2006/07/26(水) 23:57:010794デフォルトの名無しさん
2006/07/27(木) 07:08:26友達に配布するバージョンと自分の提出用バージョンの
二つを作ってたな
0795デフォルトの名無しさん
2006/07/27(木) 18:07:02二行目の台詞に激しく同意!!!
「オブジェクトごと渡してメンバ関数呼」んだ方が
ずぅぅっと便利でわかりやすいし、色んなことが出来ると思う!!
0796デフォルトの名無しさん
2006/07/27(木) 18:25:57俺、オレオレポインタ。
君の勉強熱心なところに惚れた。
君のためなら死んでもいい。
0797デフォルトの名無しさん
2006/07/28(金) 02:13:510798デフォルトの名無しさん
2006/07/28(金) 02:20:54という話はホントかも知れない。
0799デフォルトの名無しさん
2006/07/28(金) 02:21:31では解説おねがいします。
http://pc8.2ch.net/test/read.cgi/tech/1152367512/385-391
0800デフォルトの名無しさん
2006/07/28(金) 07:38:56何に使うのか分からん
配列以外の使い道の例教えてくれ
0801デフォルトの名無しさん
2006/07/28(金) 07:44:250802デフォルトの名無しさん
2006/07/28(金) 08:41:310803デフォルトの名無しさん
2006/07/28(金) 10:13:15リストやツリー等のデータ構造の表現・実装。
0804デフォルトの名無しさん
2006/07/28(金) 10:37:15関数のポインタ
ファイルポインタ
ポリモフィズム
0805デフォルトの名無しさん
2006/07/28(金) 10:44:09>ファイルポインタ
こりゃカプセル化の実例だべ。
0806デフォルトの名無しさん
2006/07/28(金) 10:52:380807デフォルトの名無しさん
2006/07/28(金) 10:54:03配列自身と各要素へのポインタと比較関数ポインタの部分と
縦横無尽に使ってる
0808デフォルトの名無しさん
2006/07/28(金) 12:25:150809デフォルトの名無しさん
2006/07/28(金) 14:44:29ポインタを置いてる八百屋はまずないと思いますが。
0810デフォルトの名無しさん
2006/07/28(金) 14:58:21ヒント:レス番
0811デフォルトの名無しさん
2006/07/28(金) 16:54:42新鮮ポインタ、一山100円
0812デフォルトの名無しさん
2006/07/28(金) 18:23:59心配かけてごめんなさい。僕は相変わらずポインタの仕事をしています。
いろんなものを指し示したり、死ね。って言われたり、がっされたり大変です。
姉さんは参照の仕事でしたね。がっされることがないのはうらやましいです。
いつか僕も参照の仕事につきたいけど、不況だし、姉さんみたいにエリートじゃ
ないからちょっと無理かな。
父さんは定年後スマートポインタやるぞーとか言ってたけどその後どうですか?
その後おとなしくしていますか? またやるって言い出したら止めてあげてください。
0813デフォルトの名無しさん
2006/07/28(金) 22:20:150814デフォルトの名無しさん
2006/07/28(金) 23:11:27それ以外の何があるんだろう。。。
0815デフォルトの名無しさん
2006/07/28(金) 23:31:120816デフォルトの名無しさん
2006/07/29(土) 00:06:11いや、勘弁してw
もう万能ポインタとか要らんから・・・
0817デフォルトの名無しさん
2006/07/29(土) 05:43:48それはわかるのだが、
データを扱うのになぜわざわざアドレスという
間接的な概念をかますのか、ということだな。
ポインタのない言語があるのだから、ポインタのある言語が
設計者の努力不足と叩かれるのは仕方あるまい。
0818デフォルトの名無しさん
2006/07/29(土) 06:24:360819デフォルトの名無しさん
2006/07/29(土) 06:48:58>データを扱うのになぜわざわざアドレスという
>間接的な概念をかますのか、ということだな。
ここは同意出来るが何を言い出すのかと思えば
>ポインタのない言語があるのだから、ポインタのある言語が
>設計者の努力不足と叩かれるのは仕方あるまい。
ただの阿呆だったか。
0820819
2006/07/29(土) 08:06:350821デフォルトの名無しさん
2006/07/29(土) 08:27:44・アドレス(ワード単位) + バイト位置
・セグメントアドレス + オフセットアドレス
幾らでもあるだろうに。
0822デフォルトの名無しさん
2006/07/29(土) 08:42:420823デフォルトの名無しさん
2006/07/30(日) 01:41:590824デフォルトの名無しさん
2006/07/30(日) 01:53:260825デフォルトの名無しさん
2006/07/30(日) 02:04:080826デフォルトの名無しさん
2006/07/30(日) 02:10:400827デフォルトの名無しさん
2006/07/30(日) 02:31:120828デフォルトの名無しさん
2006/07/30(日) 02:44:34そ・・・そうか!ポインタを使わなくても、参照は使えるんだ!
それなら・・・なんとかできるかもしれない・・・!
0829デフォルトの名無しさん
2006/07/30(日) 03:39:190830デフォルトの名無しさん
2006/07/30(日) 07:53:18>オーバーヒートがすごいな。
0831デフォルトの名無しさん
2006/07/30(日) 08:58:100832デフォルトの名無しさん
2006/07/30(日) 20:03:120833デフォルトの名無しさん
2006/07/31(月) 17:28:580834デフォルトの名無しさん
2006/08/01(火) 14:35:41ガンガンいこうぜ
0835デフォルトの名無しさん
2006/08/01(火) 23:50:32こういうソース考えたやつは馬鹿じゃねーの
0836デフォルトの名無しさん
2006/08/01(火) 23:56:300837デフォルトの名無しさん
2006/08/02(水) 00:25:09#include <stdio.h>
/* #include <signal.h> */
#define SIGINT 0
#define SIG_IGN f
typedef void fnc(int); typedef fnc *fnc_p;
void f(int a)
{
printf("f(%d)\n", a);
}
void ( *signal(int signum, void (*sighandler)(int) ) )(int)
{
return sighandler;
}
fnc_p sigcall(void)
{
return ((void(*(*)(int, void (*)(int)))(int))signal)(SIGINT, SIG_IGN); /* こっちなら通る */
/*return (*(void (*)(int, void (*)(int)))(int)signal)(SIGINT, SIG_IGN); これが>>834 */
}
int main(void)
{
fnc_p p = sigcall();
p(10);
return 0;
}
0838デフォルトの名無しさん
2006/08/02(水) 00:31:38void ( * signal(int SIG, void(*FUNC)(int)) )(int);
これでも標準関数なんだけどねぇ。
0839デフォルトの名無しさん
2006/08/02(水) 00:59:30あ、こういう関数があると知ってから>>834を見ればわかるわ。
だけどいきなり文中に出てこられたらわからん・・・。
0840デフォルトの名無しさん
2006/08/02(水) 08:43:47ポインタではなく、その配列のインデックスを
受け渡すようなプログラムばっかりだ。
うちの会社。
0841デフォルトの名無しさん
2006/08/02(水) 08:48:040842デフォルトの名無しさん
2006/08/02(水) 09:05:47無理して使わなくても良し
0843837
2006/08/02(水) 09:31:34方法が分かれば>>834の間違いもみんなすぐ気づくよ。
0844デフォルトの名無しさん
2006/08/02(水) 10:58:01同じ関数が
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t sighandler);
こう書かれていて少しは判りやすい。
0845デフォルトの名無しさん
2006/08/04(金) 01:22:03ってことか!
いや、すぐにわからなくて、ちょっと気になってた。
0846デフォルトの名無しさん
2006/08/04(金) 01:54:06いくつかの箱と、その間を結ぶ矢印でできた図をチラシの裏に書かずに
いきなりコードを書きはじめるやつがいる。
たぶん、余程の天才か余程のアホのどちらかだ。
0847デフォルトの名無しさん
2006/08/04(金) 02:00:32今でも紙に書かないとできないのか?
0848デフォルトの名無しさん
2006/08/04(金) 02:08:07まず参考になるイメージや図を作ってから取り込むのは常識だよ。
そういうのが無しでもやれるって言う自分がすげーって思われたいなら論外。
大きい場所を知らない小さい会社か?
0849デフォルトの名無しさん
2006/08/04(金) 02:24:150850デフォルトの名無しさん
2006/08/04(金) 02:44:00いや、嫌う奴は使わなきゃ良いだけだ。
0851デフォルトの名無しさん
2006/08/04(金) 02:49:010852デフォルトの名無しさん
2006/08/04(金) 02:59:480853デフォルトの名無しさん
2006/08/04(金) 03:23:51それとも「ちょっと込み入ったプログラム」とは「複数の人とやりとりするような規模のプログラム」だと言いたいのか?
0854デフォルトの名無しさん
2006/08/04(金) 04:54:30ポインタの34%は野望で出来ています
ポインタの7%はマイナスイオンで出来ています
ポインタの4%はお菓子で出来ています
ポインタの3%は言葉で出来ています
0855デフォルトの名無しさん
2006/08/04(金) 11:17:48「込み入ったプログラム」は絵に描かないと判らない、というレベルの人が
「複数の人」の中にいるんだろう。
0856デフォルトの名無しさん
2006/08/04(金) 11:58:040857デフォルトの名無しさん
2006/08/04(金) 20:51:18ポインタに限らず、まずは紙に流れを書いてやる方が
ミスがあったときも気づきやすいけどな
まぁ、ポインタだけに焦点を置くなら、別に紙に書かなくても良いがw
0858デフォルトの名無しさん
2006/08/04(金) 22:06:46目の前には広大なキャンパスがあるというのに。
0859デフォルトの名無しさん
2006/08/04(金) 23:23:16分かりやすく記述すると良いってことでしょ
あまり人のやり方にいちいちケチをつけない
0860デフォルトの名無しさん
2006/08/04(金) 23:27:28ポインタがどうのなんて紙に書いてる時間がもったいない
何のための開発環境だよ
0861デフォルトの名無しさん
2006/08/04(金) 23:42:56図解で説明されても理解できなかった。freeするの命がけ
スパゲティ書ける人尊敬するぜ
0862デフォルトの名無しさん
2006/08/04(金) 23:54:44リストなり配列なりは、テンプレートの中に隠蔽するだろうし。
STLとboost::arrayができてから、ポインタの出番は激減したす。
0863デフォルトの名無しさん
2006/08/05(土) 00:44:11ようするにC言語死ねってこと?
0864デフォルトの名無しさん
2006/08/05(土) 01:02:05C++のコンパイラが安定しなかったり準備されてなかったり性能が劣っていたりしたのも、
いまは昔の話なんだし。
宗教上の理由で使ってない現場も見かけないじゃないけど、組み込みですら
C++使ってて困ることってない。
C99とかはプロ仕様だなーとは思うけど、ランタイムに影響与える様な変更はほとんどないし、
C++が普通に使える環境では存在意義が疑わしい気すらする。
過去の資産の関係で移行を見送ってる場合もあるんだろうけど…
ポインタが万能すぎる必要以上に強力な概念なことは自明だし、使う必要のないところでまで使うことはない。
でもってC++だと、参照とコンテナ類のテンプレート化だけででも、ポインタの出番は大分減らせられる。
もちろんこの程度の範囲で済む変更なら、生成されるバイナリの質は変わりゃしないし…
とか思うんだけど、どうさ。
0865デフォルトの名無しさん
2006/08/05(土) 05:53:12概ね同意。C指定のプロジェクトでポインタを極力意識させないような関数作ってて
ふと気づくと劣化版クラス特化コンテナになっていることに気づくときがままある。
0866デフォルトの名無しさん
2006/08/05(土) 10:19:500867デフォルトの名無しさん
2006/08/05(土) 10:58:260868デフォルトの名無しさん
2006/08/05(土) 11:03:40「便利」なら使う意味があるだろう。
0869デフォルトの名無しさん
2006/08/05(土) 11:36:130870デフォルトの名無しさん
2006/08/05(土) 12:53:20コンパイルできるからいいんじゃね?
0871デフォルトの名無しさん
2006/08/05(土) 13:00:500872デフォルトの名無しさん
2006/08/05(土) 13:48:02たとえば組み込み系はARMやSHばかりじゃないんだよ。
0873デフォルトの名無しさん
2006/08/05(土) 14:13:18そうなんだろうけど、話にしか(もっと言うと風の噂にしか)聞かないんだよな。
単に業界の違いなんだろうけど。
具体的にどんな環境がそうなん?
0874デフォルトの名無しさん
2006/08/05(土) 15:24:28ハンディターミナルで、WinCE載っけてないヤツとか。
ヘタすりゃBASICのみ。(QRコードを開発した某社とか)
有名どころのプロセッサ使ってても、専用ライブラリが
抱き合わせの開発環境 (C しかない) でしか使えなかったり。
0875デフォルトの名無しさん
2006/08/05(土) 16:06:58自宅で飼ってる kernel が ABI失調症で危篤。
恐るべしG++言語
0876デフォルトの名無しさん
2006/08/05(土) 20:12:240877デフォルトの名無しさん
2006/08/05(土) 20:16:500878デフォルトの名無しさん
2006/08/05(土) 22:19:130879デフォルトの名無しさん
2006/08/11(金) 19:46:570880デフォルトの名無しさん
2006/08/11(金) 19:50:130881デフォルトの名無しさん
2006/08/11(金) 20:43:450882デフォルトの名無しさん
2006/08/11(金) 21:44:41そりゃそうだよ。ポインタを扱ってるんだもん〜〜〜ん〜〜〜ん〜〜〜(←左胸を叩きながら読むこと)
0883デフォルトの名無しさん
2006/08/11(金) 22:46:000884デフォルトの名無しさん
2006/08/12(土) 00:49:420885デフォルトの名無しさん
2006/08/12(土) 02:21:29それ油ハム法典とかいうやつでしょ?
上の口をふさがれたら下の口を差し出すとかいうやつ
0886デフォルトの名無しさん
2006/08/23(水) 06:19:17ポインタを使わないと世界中に溢れている良質のコードの再利用が
出来ない。ひとりでやっていると死ぬほど時間がかかる。
ポインタが嫌いとか好き嫌い言ってると体の調子を崩すよ。
健康にいいんだから、食べなきゃ。エネルギーに変えなきゃ。
せっかくメモリのアドレスを覚えてくれる便利な変数があるのに使わないとね。
ポインタにも型があったりして、キャストしたりして型変換できるよね。
ポインタに型がなかったら、そのポインタがさしている入れ物の大きさがどれくらいの大きさなのか
わからなくなっちゃうよ。配列の場合、次の要素がどこの番地か分からなくなる。
ポインタにも型があるから、複雑に感じるのかな。いや、ポインタのポインタとかも何でもありだから複雑なのかもしれないね。
でもCOMっていう便利なインターフェースを使うと、そのポインタのポインタっていう考え方が必要になったりするんだ。
俺もポインタは嫌いだけど、
食べるよ。エネルギーに変える。最後はうんこになる。そう、うんこ。俺のうんこ。
ポインタはうんこ。
0887デフォルトの名無しさん
2006/08/23(水) 08:19:43生のインターフェースをを扱わなければ、COMでもポインタへのポインタは特に必要ではないぞ。
VC++なら#importとかね。
0888デフォルトの名無しさん
2006/08/23(水) 09:55:53>俺もポインタは嫌いだけど、
>俺もポインタは嫌いだけど、
二回言うほど苦手なのは判った。
0889デフォルトの名無しさん
2006/08/23(水) 10:00:47なんかのコピペ?
0890デフォルトの名無しさん
2006/08/23(水) 22:47:45いつもいつも、違うところばかりさしてしまいます。
こんな私に、ポインタの使い方を教えてください。
0891デフォルトの名無しさん
2006/08/24(木) 00:03:30普通に指示棒で指した方が、発表者も使いやすいし観客も見やすいハズ。
0892デフォルトの名無しさん
2006/08/24(木) 05:56:39クラスの中にあるメンバ関数を呼び出す事だって出来るのが最強なのです。
アロー演算子? ->
こいつが最強なんです。
どたまの悪い俺から言わせて貰えば、クラスを格納したポインタ変数でもない、そんな普通のクラス変数に
アロー演算子を使ってみたりするドジとか余裕でやっちゃいます。
おまけに、関数の引数で参照渡しの使いどころを間違えてみたり、ありえない引数とかを余裕で設定するんです。
ポインタが俺に及ぼす影響は計り知れない。ポインタのゴミの消し忘れとか日常茶飯事。
Windowsベースのプログラミングをしてるとコードが長くなりすぎて、
自分が今、ここで何の機能をプログラミングしなければいけないのかさえ、わからなくなるんです。
そんなときにもポインタが、俺の前に立ちはだかる。
なんつうの、いわゆる混乱?
そんなんだから、他人の書いたコードとか理解するのに相当な月日が流れる。
もうそんなこんなで30になりそうです。え、もっと勉強しろ。任天堂DS買え?
そうなんです。そういう次元なんです。
本業じゃなくて、よかったです。
0893デフォルトの名無しさん
2006/08/24(木) 09:12:570894デフォルトの名無しさん
2006/08/25(金) 00:41:14単に設計方法や構造の組み方がおかしいだけかと
0895デフォルトの名無しさん
2006/08/25(金) 00:47:53才能ないよ。やめれば?
0896デフォルトの名無しさん
2006/08/25(金) 01:11:22こんなコンピュータ内部の動作のために人間様の貴重な
時間と脳力使ってられるかってところが現場の本音なわけで
特に今のJavaやスクリプト言語のようなポインタのない高級な
言語の蜜の味を知ってしまった人達は心からそう思うわけで
だからポインタなぞわからなくとも恥ずかしくもなんともないわけで
つまるところポインタ氏ね。
0897デフォルトの名無しさん
2006/08/25(金) 01:18:51そのスクリプト言語やらの土台は誰がどう作ってるのか考えてるのかよ?
0898デフォルトの名無しさん
2006/08/25(金) 01:19:27日本語でどうぞ。
0899デフォルトの名無しさん
2006/08/25(金) 03:23:12それが直感的にわかるまでが大変です。
そして
変数の前にくる、このお尻の穴のようなもの「*」がポインタ変数に付くと、
そのポインタの中身を示すようになるのが、なんともやらしいことでありまして、
さすがはお尻の穴だなぁと感慨深く思います。
この、*がお尻の穴のようなものに見えてくると、もうプログラミング所ではなくなり、
皆さんのご想像する結果となってしまうわけです。
しかし、
大事なのは、この、お尻の穴の代わりに、このような&雪だるまさんを変数につけると、
通常の変数でさえもポインタの役割にちかいことをやってくるます。
はい。みなさん勉強になりましたね。
それでは、普及がてらみなさんごいっしょに。せーの。
「雪だるまにお尻の穴は絶対必要!」
0900デフォルトの名無しさん
2006/08/25(金) 03:27:300901デフォルトの名無しさん
2006/08/25(金) 03:36:030902デフォルトの名無しさん
2006/08/25(金) 04:58:29あ、うまいこと言ってもうたやん・・・
0903デフォルトの名無しさん
2006/08/25(金) 07:26:370904デフォルトの名無しさん
2006/08/25(金) 07:37:19#include <stdio.h>
int main(){
char *p="pointer";
puts(*&*&*&*&*&*&*&*&*&*&*&*&*&*&p);
return 0;
}
0905デフォルトの名無しさん
2006/08/25(金) 08:02:44Javaにポインタが無いとはなんのご冗談のおつもりで?
0906デフォルトの名無しさん
2006/08/25(金) 09:27:130907デフォルトの名無しさん
2006/08/25(金) 09:41:08・・・はjavaにもあるんだな。
つまりポインタは本当に存在したんだ!!
なんだってー (AA略
0908デフォルトの名無しさん
2006/08/25(金) 10:13:30「ぬるぽ」誕生の瞬間を再現してるな。
0909デフォルトの名無しさん
2006/08/25(金) 23:28:05ここ最近のポインタじゃなくてポイントですね!
0910デフォルトの名無しさん
2006/08/25(金) 23:31:150911伊藤
2006/08/26(土) 08:37:170912デフォルトの名無しさん
2006/08/26(土) 09:59:140913デフォルトの名無しさん
2006/08/26(土) 12:23:320914デフォルトの名無しさん
2006/08/26(土) 12:35:35ポインタの必要性が今ひとつ分からん
0915デフォルトの名無しさん
2006/08/26(土) 13:27:06戻り値で返せるような変数の個数だったら良いよ
配列や構造体はどうするよ?
0916デフォルトの名無しさん
2006/08/26(土) 15:23:02でもなぜポインタを使わなければいかないかって説明するのめんどくさいよ。
外部変数と自動変数の挙動とか値渡しの意味とか、その辺理解してないと
scanf("%d", &i);
の&がなぜ必要か理解できないからねぇ。
0917デフォルトの名無しさん
2006/08/26(土) 15:43:51ポインタつかった時と比べて遅いんだよね
それが3個4個なると・・・
さらに、渡すのさえ面倒
構造体にまとめれば一個渡すだけでできる
0918デフォルトの名無しさん
2006/08/26(土) 16:42:16>渡した方で変数確保するから
ハァ?
0919デフォルトの名無しさん
2006/08/26(土) 16:50:030920デフォルトの名無しさん
2006/08/26(土) 17:44:510921デフォルトの名無しさん
2006/08/26(土) 17:47:39「値渡した先で領域確保」
プ
0922デフォルトの名無しさん
2006/08/26(土) 18:18:560923デフォルトの名無しさん
2006/08/26(土) 18:28:180924デフォルトの名無しさん
2006/08/27(日) 14:42:520925デフォルトの名無しさん
2006/08/27(日) 16:48:510926mokorimoko
2006/08/28(月) 11:33:470927デフォルトの名無しさん
2006/08/28(月) 16:00:30事実上、永久にムリ
0928デフォルトの名無しさん
2006/08/28(月) 16:51:11「事実上」とは「現時点での事象」であり、
一方「永久に」とは時間軸上の未来をも含むため
矛盾が生じています。
0929デフォルトの名無しさん
2006/08/29(火) 03:55:030930デフォルトの名無しさん
2006/08/29(火) 13:02:330931デフォルトの名無しさん
2006/08/29(火) 13:30:130932デフォルトの名無しさん
2006/08/30(水) 01:06:20ポインタの出番って本当減るよな。
真の意味でポインタが必要な状況なんて殆ど無い、あとは参照で事足りる。
ぬるぽに意味を持たせたいだけ、ちょっぴり出番があるくらいか。
いや、リストとか自分で書いたら、嫌でも顔だすけどね。
0933デフォルトの名無しさん
2006/08/30(水) 01:16:040934デフォルトの名無しさん
2006/08/30(水) 01:36:53単にアドレス演算の機能を奪い取っただけのポインタ。
そしてNULL状態が存在しない。
これがでかいのさ。
0935デフォルトの名無しさん
2006/08/30(水) 06:18:540936デフォルトの名無しさん
2006/08/30(水) 09:36:340937デフォルトの名無しさん
2006/08/31(木) 02:32:490938デフォルトの名無しさん
2006/08/31(木) 02:38:270939デフォルトの名無しさん
2006/08/31(木) 03:42:48この辺だなー。
ただ、どう言い繕われても言葉遊びの様に思えてしまうことはある。
0940デフォルトの名無しさん
2006/08/31(木) 04:49:360941デフォルトの名無しさん
2006/08/31(木) 10:51:22Cがプログラマにとって大切な存在になってしまったことが最大の癌
0942デフォルトの名無しさん
2006/08/31(木) 10:57:020943デフォルトの名無しさん
2006/08/31(木) 11:11:42そんなお前はA、Bすらやっていないくせにw
0944デフォルトの名無しさん
2006/08/31(木) 11:17:30どーせ、Aもまださ
0945デフォルトの名無しさん
2006/08/31(木) 11:37:080946デフォルトの名無しさん
2006/08/31(木) 11:42:550947デフォルトの名無しさん
2006/09/01(金) 22:47:350948デフォルトの名無しさん
2006/09/01(金) 22:51:52template <int N>
void func(int (&a)[N])
という風に配列を受け取れるのは意外と知らない人が多い。
この場合、aの型はint *ではなく、int [N] である。
まあ中にはint *としてしまう糞なコンパイラもあるが。
0949デフォルトの名無しさん
2006/09/02(土) 00:40:43いや、aの型はint (&)[N]だろ。
0950デフォルトの名無しさん
2006/09/02(土) 00:56:28typeid().name()は試してみた?
0951デフォルトの名無しさん
2006/09/02(土) 01:24:35その書き方大好き。
でもint*になるコンパイラ多すぎ。
実は処理系依存なんじゃないのか?
詳しくないけど。
0952デフォルトの名無しさん
2006/09/02(土) 01:28:420953デフォルトの名無しさん
2006/09/02(土) 01:49:26typeidにT&型のオブジェクトを使用しても、参照だからTを見に行ってしまう。
だからtypeidで確認するのは無意味。
0954デフォルトの名無しさん
2006/09/02(土) 01:50:360955デフォルトの名無しさん
2006/09/02(土) 01:55:02#include<iostream>
template <int N>
void func(int (&a)[N]){std::cout << typeid(&a).name();}
int main(){int a[10];func(a);}
dmc,g++,clで試してみたけど全部int[10]と認識されていたけど、
どこのコンパイラの話?
0956デフォルトの名無しさん
2006/09/02(土) 02:10:390957デフォルトの名無しさん
2006/09/02(土) 08:33:26>template<typename T, std::size_t N> inline std::size_t numberof(T (&)[N]) {return N;}
これが通らない。
0958デフォルトの名無しさん
2006/09/03(日) 01:40:55テンプレートスレになっとるがな。
0959デフォルトの名無しさん
2006/09/03(日) 13:36:47>cipherの設計の目標の一つはポインタ的な物の排除
0960デフォルトの名無しさん
2006/09/03(日) 14:28:480961デフォルトの名無しさん
2006/09/03(日) 22:44:50そうすると、この人の目指すところはHaskellあたりにしかないのだが。
0962デフォルトの名無しさん
2006/09/04(月) 01:42:49つうか、配列使うな。 ポインタも使うな。
使っていいのは、リスト構造。
0963デフォルトの名無しさん
2006/09/04(月) 01:49:04Cのポインタは事実上配列にアクセスすするための一手段と化している。
0964デフォルトの名無しさん
2006/09/04(月) 01:53:080965デフォルトの名無しさん
2006/09/04(月) 01:58:50欲しいオブジェクトのデータを貰うためには、そのIDとオペレーションを書いてメッセージボトルに入れて、海に流すのさ。
そうすると、メッセージボトルを受け取った相手が、それが自分宛でなければまた海に流す。
繰り返すうちにいずれは宛先の相手に届くからな。
目的の相手に届いたら、メッセージに書かれてるオペレーションを元に結果をまたボトルに入れて海に流してくれるんだ。
さあ、こうやって直接メモリーの番地を指定しなくとも、あいてに伝わる方法はあるのさ。
相手が受け取るまで手渡しリレーでもいいから、ポインタなんて使わなくていいのさ。
0966デフォルトの名無しさん
2006/09/04(月) 02:09:14そのメッセージIDをポインタと呼称しても、違和感無く他人に通じると思うよ。
0967デフォルトの名無しさん
2006/09/04(月) 02:13:37ポインタでは漂流しない
0968デフォルトの名無しさん
2006/09/04(月) 02:16:35っといってその場所を書いた紙を作業者に渡す
場所を書いた紙 = ポインタ
0969デフォルトの名無しさん
2006/09/04(月) 02:26:27家と言う入れ物に住所が書いてあるのは、配列に番号が振ってあるのと同じ。
ある規則によって振られた識別子ね。
ポインタというのは、強いて言えば、東経135度23分xx、北緯32度26分xxといったたぐいのもの。
機械の中身の厳密なメモリーの位置ね。
0970デフォルトの名無しさん
2006/09/04(月) 02:38:25ポインタとは違うが、最近のCPUではメモリアドレスも仮想化されて、
何段かテーブル参照をしてようやく物理メモリのアドレスを得ることもある。
それがなんだか漂流とは違うけど、似たようなものを感じ取った。
0971デフォルトの名無しさん
2006/09/04(月) 02:38:29全然違うものだと思うんだが。
0972デフォルトの名無しさん
2006/09/04(月) 02:41:25ポインタを完全に使いこなせるようになるなら同じものといえる。
そうでないなら実質的に違うもの。
0973デフォルトの名無しさん
2006/09/04(月) 02:44:490974デフォルトの名無しさん
2006/09/04(月) 02:48:24それって配列は知ってるけどメモリ上にどう格納されてるのか知らないから
違うって話じゃないのか?
0975デフォルトの名無しさん
2006/09/04(月) 09:36:46いや、学習にかかるコストの話。
ポインタを使うには、ポインタ演算や間接参照、ポインタのポインタ、
ヌルポインタの対処など色々学習する必要がある。
同じと見なすには新たに覚えることが多すぎるのでは?ということ。
0976デフォルトの名無しさん
2006/09/05(火) 00:32:32まぁポインタ習得は結構時間かかったけどな
でも苦労しただけの価値はあると思うよ
ポインタ知らない頃のソース見ると多重ループの山で
ソースが画面右はみだしてたからな
0977デフォルトの名無しさん
2006/09/05(火) 02:16:36ポインタ使うのにそんな苦労した記憶ないなあ。
僕が読んだ本ではかなり最初の方でポインタの解説してたし
ソースをガリガリ書くようになったのは一通り覚えた後だったからかな。
0978デフォルトの名無しさん
2006/09/05(火) 02:49:52何で覚えるのに苦労するのかすらわからなくなるが、
初めて出くわした時には確実に蹴躓いてる、それがポインタ。
つーか実のところポインタが難しいんじゃなくって、それで実装される
リストとかのデータ構造の学習が難しいんじゃなかろうか。
0979デフォルトの名無しさん
2006/09/05(火) 09:59:18なんでポインタが理解できないのかが理解できない。
>>978 後段落
それはない。それ以前で躓いている。
0980デフォルトの名無しさん
2006/09/06(水) 01:34:21なんでもかんでも配列でやるのは、かえって複雑になるよ。
0981デフォルトの名無しさん
2006/09/06(水) 06:51:18「こういう時にこう使うんだ」って体験を積み重ねていけば、
その内体で覚えられるんじゃないかな。
0982デフォルトの名無しさん
2006/09/06(水) 17:55:270983デフォルトの名無しさん
2006/09/06(水) 18:14:57やっぱそう思う人が多いってことなんだろうな。
0984デフォルトの名無しさん
2006/09/07(木) 03:32:24読んだことは無いが、Cのポインタだけで一冊書いた本とか出てなかったっけ。
一冊分も書くことがあるのが不思議ではあるが。
0985デフォルトの名無しさん
2006/09/07(木) 17:46:030986デフォルトの名無しさん
2006/09/08(金) 02:20:48何が書いてあるの?
興味ある。
0987デフォルトの名無しさん
2006/09/08(金) 02:46:54↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
0988デフォルトの名無しさん
2006/09/08(金) 03:42:460989デフォルトの名無しさん
2006/09/08(金) 03:43:23〜 完 〜
0990デフォルトの名無しさん
2006/09/08(金) 03:44:140991デフォルトの名無しさん
2006/09/08(金) 21:10:200992デフォルトの名無しさん
2006/09/08(金) 21:11:110993デフォルトの名無しさん
2006/09/08(金) 21:11:540994デフォルトの名無しさん
2006/09/08(金) 21:12:360995デフォルトの名無しさん
2006/09/08(金) 21:13:150996デフォルトの名無しさん
2006/09/08(金) 21:14:170997デフォルトの名無しさん
2006/09/08(金) 21:16:360998デフォルトの名無しさん
2006/09/08(金) 21:17:370999デフォルトの名無しさん
2006/09/08(金) 21:18:301000デフォルトの名無しさん
2006/09/08(金) 21:19:09死ね。氏ねじゃなくて、死ね。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。