ポインタ死ね。

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
死ね。氏ねじゃなくて、死ね。
2デフォルトの名無しさん:2006/02/27(月) 17:24:27
>>1
そうしたら現代のコンピュータを全て否定することになるがそれでもよいのか。
3デフォルトの名無しさん:2006/02/27(月) 17:30:12
ポインタがツンデレだという事実を
なぜわからない!
4デフォルトの名無しさん:2006/02/27(月) 17:35:35
ツンデレか!
よし、頑張るよ。
5デフォルトの名無しさん:2006/02/27(月) 18:35:58
>>1
リアルで通報しますた。
6デフォルトの名無しさん:2006/02/27(月) 22:47:11
時空警察に通報しといた
7デフォルトの名無しさん:2006/02/27(月) 23:12:30
ヨドバシカメラでたまる
8デフォルトの名無しさん:2006/02/27(月) 23:13:15
それ、ポイント
9デフォルトの名無しさん:2006/02/27(月) 23:13:54
自演乙
10デフォルトの名無しさん:2006/02/27(月) 23:14:19
自演じゃねーYO!
11デフォルトの名無しさん:2006/02/27(月) 23:15:04
>>7-10は自演
12デフォルトの名無しさん:2006/02/27(月) 23:16:02
はいはいワロスワロス
13デフォルトの名無しさん:2006/02/27(月) 23:16:35
VIPに帰れ
14デフォルトの名無しさん:2006/02/27(月) 23:16:40
ポイントじゃなくて、ポインヨ
15デフォルトの名無しさん:2006/02/28(火) 00:19:20
↓ツンデレなポインタが一言
16デフォルトの名無しさん:2006/02/28(火) 00:46:19
Segmentation Fault
17デフォルトの名無しさん:2006/02/28(火) 01:46:19
Javaは糞
18デフォルトの名無しさん:2006/02/28(火) 01:50:55
もう少し親しくならないとダメみたい
19デフォルトの名無しさん:2006/02/28(火) 04:43:49
ポインタを萌え擬人化でもしてくれれば勉強する気になるのに
201:2006/02/28(火) 11:37:28
すいません。自己解決しました。
もう書き込まないでいいです。
21デフォルトの名無しさん:2006/03/01(水) 00:48:58
じゃあ私が変数xを指定してあげるから・・・








べ、別にあんたのためじゃないからねっ!仕事だからよ!仕事!!
22デフォルトの名無しさん:2006/03/01(水) 02:00:18
な、何もあんたのために参照してあげてるわけじゃないんだからね!
cloneとか、自分でやってよね!
23デフォルトの名無しさん:2006/03/01(水) 09:49:58
たまには私の事思い出してよね…

べ、別にガベージコレクトなんてどうでもいいんだから!
スマートポインタなんて知らないっ
24デフォルトの名無しさん:2006/03/01(水) 13:58:07
ぬるポインタを例外にするなんて、ひどすぎ! 信者絵!
25デフォルトの名無しさん:2006/03/01(水) 14:12:47
なんだ、ポイント厨氏ねじゃないのか。



マイルがたまいる




ポイント・マイル
http://hobby7.2ch.net/point/
26*:2006/03/01(水) 15:29:49
私は毎日怯えています。
27デフォルトの名無しさん:2006/03/01(水) 15:41:06
マウスポインタもポインタである
28デフォルトの名無しさん:2006/03/01(水) 17:11:41
C言語のポインタの定義ってさ、

なんで
int *p;
みたいに「ポインタ用int」みたいなもの定義しなくちゃいけないの?

普通にintにポインタの番号は格納できんのか?
29デフォルトの名無しさん:2006/03/01(水) 17:14:24
レーザーポインタもポインタである。
ウルトラ警備隊の車もポインターである。
星野流宇はボインダーである。

>>28
日本語でおk
30デフォルトの名無しさん:2006/03/01(水) 17:20:41
>>29
分かった。ポインタはあきらめた。
31デフォルトの名無しさん:2006/03/01(水) 17:25:06
>>28
つりにマジレスすると、
> 「ポインタ用int」
と思ってる時点で理解できてない
32デフォルトの名無しさん:2006/03/01(水) 17:29:55
分かった。ポインタなんだな。
33デフォルトの名無しさん:2006/03/01(水) 17:43:37
どこのスレ高忘れたけど
CのポインタよりもPerlのポインタのほうが
わかりやすいってスレがあった。
あれみたら確かにPerlのほうがわかりやすい。
34*:2006/03/01(水) 19:09:49
私はただアドレスを覚えているだけなんです。そのほかのことは知りません。
35デフォルトの名無しさん:2006/03/01(水) 19:12:03
ツンデレじゃないじゃないじゃないじゃない
36デフォルトの名無しさん:2006/03/01(水) 19:23:04
*(・ω・` )
37デフォルトの名無しさん:2006/03/01(水) 19:25:42
*(・ω・` )∀・)
38デフォルトの名無しさん:2006/03/01(水) 21:15:22
int ***************** p;
39デフォルトの名無しさん:2006/03/01(水) 21:17:43
(int*´д`*)アハァ…
40デフォルトの名無しさん:2006/03/01(水) 21:22:07
ポインタとは人間がこれはポインタとして使う
と決めて使うのであれば何であってもポインタ
となる。だから言語でポインタがサポートされて
いなくてもポインタを作ることは可能だ。実体が
無く何かを指し示すものがポインタだからだ。
41デフォルトの名無しさん:2006/03/01(水) 21:45:30
死ぬなポンタ
42デフォルトの名無しさん:2006/03/01(水) 23:21:57
ポインタ理解してもC言語にはもっと難しいこといっぱいだけどな
43デフォルトの名無しさん:2006/03/01(水) 23:29:09
ポインタのポインタ
44デフォルトの名無しさん:2006/03/02(木) 00:16:23
char *ptr[255]は
255個のcharの配列へのポインタだっけ?
charへのポインタの255個の配列だっけ?

ちなみに前者だったとして、使い道としてはchar*なんだけど要素が255個のchar配列限定。と考えてよいですか?
たとえば、void func(char *p[255])ってやって、
int main()
{
 char array1[255];
 func(array1);    ←OK
 char array2[10];
 func(array2);    ←おこられる。
}
見たいな感じになってくれるんでしたっけ?
45デフォルトの名無しさん:2006/03/02(木) 00:23:22
>>44
char *(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);と言う風に&演算子を使う必要があるんだという説明で納得できる?
46デフォルトの名無しさん:2006/03/02(木) 01:19:22
>>45
すんばらしい。。
ありがとう(* ´д`*)
47デフォルトの名無しさん:2006/03/02(木) 08:33:09
ポインタが理解できないという脳みその構造の方が理解できない
ポインタだけで本一冊書いちゃうライターさん引っ張るのうますぎ
48デフォルトの名無しさん:2006/03/02(木) 11:57:26
ポインタ使えなくなったら困るぜ。
ポインタ=メモリへのアドレス
それだけさw。
49デフォルトの名無しさん:2006/03/02(木) 12:32:53
ポインタ理解出来ない馬鹿は腹筋100回な。
俺はもうすませた。
50デフォルトの名無しさん:2006/03/02(木) 14:46:10
腹筋100回できないバカは何を100回やればいいのでしょうか?
51デフォルトの名無しさん:2006/03/02(木) 14:53:59
ポインタの冒険というくだらない
RPGツクールで作られたRPGを思い出した。
マウスカーソルが主人公でWindowsデスクトップ上の
ウィルスを駆除するというだけの単純な奴
52デフォルトの名無しさん:2006/03/02(木) 16:16:47
気になったのでDLした
いまからPLAYする
53デフォルトの名無しさん:2006/03/02(木) 18:27:50
発想は面白いと思ったけど
無駄な動きが多くて飽きてくるかもしれん。
作者は当時学生だったと思った。
54デフォルトの名無しさん:2006/03/02(木) 19:10:42
何気におもろいスレだなここww
55デフォルトの名無しさん:2006/03/02(木) 19:15:28
**********************************p
この'*'ってどこまでつけてOKなんだろ?
実際問題3つ以上つけたことないけど
56デフォルトの名無しさん:2006/03/02(木) 19:28:24
>>55
echo "int main(){int " > ptr.c
yes "*" >> ptr.c
echo "p;return 0;}" >> ptr.c
^C
gcc ptr.c
とやるとメモリ使用量がGByte単位でふくれあがった後コンパイラが落ちた。
57デフォルトの名無しさん:2006/03/02(木) 19:36:30
ギガワロスwwww
58デフォルトの名無しさん:2006/03/02(木) 19:41:07
59デフォルトの名無しさん:2006/03/02(木) 19:44:14
VC++ 6.0 でやってみた。
1010個まではコンパイル出来るが、1011個だと
  fatal error C1026: プログラムの解析に必要なスペ-スが、コンパイラ内でスタック オ-バ-フロ-を起こしました。
だって。
60デフォルトの名無しさん:2006/03/02(木) 19:48:08
日本語で言うと
ポインタのポインタのポインタのポインタのポインタのポインタのポインタのポインタのポインタの
ポインタのポインタのポインタのポインタのポインタのポインタの・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(ρw-).。o○
61デフォルトの名無しさん:2006/03/02(木) 20:33:28
>>55
一応 C++ では規格に「実装は最低限ここまで対応しろ」という
基準が示されています.

Pointer, array, and function declarators (in any combination)
modifying an arithmetic, structure, union, or incomplete type
in a declaration [256].

256 までは対応してないといけません.それ以上は実装の裁量次第かと.
6261:2006/03/02(木) 20:36:28
あ,ちょっと間違い. 256 という数字はあくまで最低限満たすべき
数値として「推奨される値」でした.すいません.
63デフォルトの名無しさん:2006/03/02(木) 20:37:40
うむ、そのとうり
64デフォルトの名無しさん:2006/03/02(木) 20:38:52
win2kのcygwin gccだと*の数で落ち方が違った。
1,968,402個以下でコンパイル成功。
1,968,403個以上で失敗、stackdumpを吐いて倒れた。
8,000,000個だとout of memory allocatingとメッセージをだして終了だった。

1,968,402境界の原因はメモリ不足ではなさげ。ほかのアプリを閉じてからやっても同じ結果だった。

暇人とか言わないでください。
65デフォルトの名無しさん:2006/03/02(木) 21:07:38
>>1 に激しく同意
おれの VC++ 代(VIC カメラのポイントで払った)どうしてくれるんだ
66デフォルトの名無しさん:2006/03/02(木) 21:11:32
BIC だったウ濁音氏ね
67デフォルトの名無しさん:2006/03/02(木) 21:28:46
なんか話がズレてきてる
68デフォルトの名無しさん:2006/03/02(木) 22:40:23
>>28
マジレスすると演算子の結合優先度は

int (*p);

ではなく

(int *) p;

「int型へのポインタ」という型になる。
69デフォルトの名無しさん:2006/03/02(木) 22:42:45
ポインタのポインタって表現は違和感あるな。
ポインタへのポインタならわかるんだが。
70デフォルトの名無しさん:2006/03/02(木) 23:05:37
>>68
SUGEEEEEEEEEEEEEEEEEEEE
WKARIYASUUUUUUUUUUUUUUUUUUU
71デフォルトの名無しさん:2006/03/02(木) 23:18:19

void A( unko u )
{

}

void main()
{
unko& u;
A( u );
return;
}
72デフォルトの名無しさん:2006/03/03(金) 00:30:53
>>68
> (int *) p;
ちがうとおもう
73デフォルトの名無しさん:2006/03/03(金) 00:48:06
CHIGAUNOKAAAAAAAAAAAAAAAAAAAAAAA
74デフォルトの名無しさん:2006/03/03(金) 01:00:30
意味はそれでいい気がするけど
int *p, q, r
ってやったらpだけポインタ
75デフォルトの名無しさん:2006/03/03(金) 01:25:36
int* p, q, r
だろうがpだけポインタだった希ガス
76デフォルトの名無しさん:2006/03/03(金) 01:31:03
typedef int* PINT にすると分かりやすい。
77デフォルトの名無しさん:2006/03/03(金) 01:46:50
ポインタと結婚したいです><
78デフォルトの名無しさん:2006/03/03(金) 01:50:55
ポインタはボインだ
という俺の妄想
79デフォルトの名無しさん:2006/03/03(金) 02:03:23
ワロタwww
80デフォルトの名無しさん:2006/03/03(金) 02:05:12
ツルペタロリツンデレじゃなきゃやだやだやだぁ
81デフォルトの名無しさん:2006/03/03(金) 02:07:58
ツンデレはなんか納得できるw
82デフォルトの名無しさん:2006/03/03(金) 02:38:41
金髪ツインテール14歳の大人なツンデレが好きです。
83デフォルトの名無しさん:2006/03/03(金) 04:23:59
(  *  )´・ω・`)
84デフォルトの名無しさん:2006/03/03(金) 15:59:10
ゲッタードリル! ( `Д´)≫*  )´・ω・`)
85デフォルトの名無しさん:2006/03/03(金) 22:17:02
ぽいたん萌え
86デフォルトの名無しさん:2006/03/03(金) 22:56:39
ポインタかわいいよポインタ
87デフォルトの名無しさん:2006/03/03(金) 23:00:52
int* a,b;
で両方ともint型ポインタに成らないのがマジむかつくんですが。
88デフォルトの名無しさん:2006/03/03(金) 23:02:04
>>87
typedef int* PINT;

PINT a, b;
8987:2006/03/03(金) 23:17:11
そのようにtypedefすれば出来る仕様が余計に腹立たしいのですが
90デフォルトの名無しさん:2006/03/03(金) 23:26:42
>>89
ではどのようにtypedefすればできる仕様ならよいでしょうか。

たとえば
tempate<typename T>
class type
{
    typedef T type;
};

typedef type<int*>::type PINT;
91デフォルトの名無しさん:2006/03/03(金) 23:29:38
C++/CLI なら
String^ a, b;
で通るはず
92デフォルトの名無しさん:2006/03/03(金) 23:31:50
要するに
(p)←*pのアドレス入り
 ↓
(*p)←計算とかで使うの数値入り

って事?
93デフォルトの名無しさん:2006/03/04(土) 01:50:06
ポインタをコールバック関数に使うあたりで、華麗すぎて
俺には向かないと思ったんだけど・・・昔はアセンブラで間接技を
使って一本とっていたので、あれとおんなじと判ったとき,
目からうころがとまれした。




94デフォルトの名無しさん:2006/03/04(土) 02:01:26
とまれした
とれました?
どっちにしろうろこは落ちる物です
無知を晒して本当にありがとうございました
95デフォルトの名無しさん:2006/03/04(土) 02:06:09
目からうろこが落ちたと思ったらコンタクトレンズでした
96デフォルトの名無しさん:2006/03/04(土) 03:02:32
角膜おとしちゃった、テヘッ
97デフォルトの名無しさん:2006/03/04(土) 04:43:27
ごめん、踏んじゃった。
98デフォルトの名無しさん:2006/03/04(土) 07:09:04
>>96
失明乙であります
99デフォルトの名無しさん:2006/03/04(土) 12:15:53
このスレ怖いよ
100デフォルトの名無しさん:2006/03/04(土) 12:44:31
怖くなんか無いよ
101デフォルトの名無しさん:2006/03/04(土) 13:31:35
俺なんかレーシックやったから角膜削れてるもんね。
102デフォルトの名無しさん:2006/03/04(土) 16:02:49
ぽいんつさんのブログという
女エンジニアだか女ソフトウェア研究者の
ブログを思い出した。
Javaを使いこなしてるらしい。
103デフォルトの名無しさん:2006/03/04(土) 16:04:33
104デフォルトの名無しさん:2006/03/04(土) 23:42:36
ポインタから参照に代えると何が改善しますか?
105デフォルトの名無しさん:2006/03/04(土) 23:49:22
参照はNULLが無効
オーバーロード引数問題の解決
誤ってdeleteさせない
106デフォルトの名無しさん:2006/03/04(土) 23:50:28
僕これから参照派になります^^
107デフォルトの名無しさん:2006/03/04(土) 23:50:57
こもヘタレがぁ!
108デフォルトの名無しさん:2006/03/04(土) 23:55:13
C++の参照なら参照先を変更できないって違いが大きいかな。
109デフォルトの名無しさん:2006/03/05(日) 00:03:05
そこだけ呼び出しもととスコープが繋がってるイメージですか?
110デフォルトの名無しさん:2006/03/05(日) 00:19:21
で、C++の参照を使うべきだって思ったことあるかい?

自分の使っているライブラリの仕様で
参照を使えって指定されている場合を除く。
111デフォルトの名無しさん:2006/03/05(日) 00:29:03
>>110
演算子多重定義。
構造体・クラスの値渡し・constポインタ渡しの代わりにconst参照。
112デフォルトの名無しさん:2006/03/05(日) 00:29:21
ない
113デフォルトの名無しさん:2006/03/05(日) 00:30:19
参照は、クラスの実体渡しを実現させただけ。
114デフォルトの名無しさん:2006/03/05(日) 00:31:05
ある
115デフォルトの名無しさん:2006/03/05(日) 00:34:13
参照先を変えたくないときに使うな。わざわざconstポインタ使うのもめんどいし。
116デフォルトの名無しさん:2006/03/05(日) 02:35:16
てゆーか俺最強だし
117デフォルトの名無しさん:2006/03/05(日) 10:52:53
最近、アドレスについてあんまり理解しなくても/教えなくてもポインタについてはわかる/説明できるんじゃないかと思えるようになってきた今日この頃
118デフォルトの名無しさん:2006/03/05(日) 11:17:03
>最近、……今日この頃
119デフォルトの名無しさん:2006/03/05(日) 13:02:03
ポインタでは限界で参照だと解決とかな事例は?
120デフォルトの名無しさん:2006/03/05(日) 13:11:05
普通に演算子オーバーロードはポインタでは限界だと思うが
121デフォルトの名無しさん:2006/03/05(日) 13:40:55
演算子オーバーロードは言語構文でそうなっているだけ。

演算子オーバーロードが実行時に参照を使って何かにアクセスするわけじゃないし。
122デフォルトの名無しさん:2006/03/05(日) 13:47:48
話がかみ合ってねぇ〜
>>119はなにがいいたいんだ?
123デフォルトの名無しさん:2006/03/05(日) 13:52:16
むしろ、C++の参照では限界でC++のポインタで解決だという事例は?
あー。メモリ内容ぶっ壊すようなマイナス的なものは除く。
124デフォルトの名無しさん:2006/03/05(日) 13:55:36
うるせーな
早くポインタ殺せ
125デフォルトの名無しさん:2006/03/05(日) 13:56:55
現在多く使われている言語では
どれもC++のポインタは死んでいる。
126デフォルトの名無しさん:2006/03/05(日) 14:40:29
ポインタがなにしたっていうんだ
メモリを壊すのはポインタじゃなくてたいていは代入だ
殺すなら代入を殺せ
127デフォルトの名無しさん:2006/03/05(日) 15:34:41
代入先に不正なメモリをさすことが出来るのが
そもそもの原因だ。ポインタを殺せ。
128デフォルトの名無しさん:2006/03/05(日) 16:24:49
>>121
参照は演算子オーバーロードのために導入したとビョーン先生が言ってる
129デフォルトの名無しさん:2006/03/05(日) 19:09:04
プレステのゲーム作ってたときなんかは、固定長のデータが詰まった
バイナリファイルをCDからガツンと読み込んで、その先頭アドレスを
構造体ポインタにキャストしてデータとして使っていたが、
その手の手法は「参照」じゃ_。
130デフォルトの名無しさん:2006/03/05(日) 20:03:27
危険なことができるってことはその分柔軟なこともできるってこった
安全を求めたらできることは段々少なくなってくる
世の中こんなもんだろう
131デフォルトの名無しさん:2006/03/05(日) 20:06:20
ポインタを使わないプログラミングなんて
ゴム越しにセクースするようなものだ。
132129:2006/03/05(日) 20:49:51
そもそもポインタをアドレス格納用変数といっとるやつは
アドレスとポインタの違いを説明できんのか?
133デフォルトの名無しさん:2006/03/05(日) 20:53:09
ポインタはアドレスをポイントする
134デフォルトの名無しさん:2006/03/05(日) 21:09:41
ぬるぽ
135デフォルトの名無しさん:2006/03/05(日) 21:10:14
>>129
struct hoge {/* 〜 */};

void *p = ガツン;
hoge& hoge = *static_cast<hoge*>(p);
まあ褒められたことではないし、おとなしくポインタを使うべきだと思うけど。
136デフォルトの名無しさん:2006/03/06(月) 01:43:32
ポインタの為なら死ねる!><
137デフォルトの名無しさん:2006/03/06(月) 03:36:30
>>131
巧い!
安全だけどいまいっぽ気持よくない
138デフォルトの名無しさん:2006/03/06(月) 03:37:46
馬鹿野郎!
ゴムつけないと早すぎちゃうでしょ><
139デフォルトの名無しさん:2006/03/06(月) 03:43:58
>>129
発想を逆転して、参照が示す先に
データをロードすれば良いだけ。
140デフォルトの名無しさん:2006/03/06(月) 15:36:07
>>138
俺おなにーしすぎて超遅漏。
141デフォルトの名無しさん:2006/03/07(火) 02:07:42
ポインタをアドレス格納用変数だと思ってる俺を諭してくれ。
142デフォルトの名無しさん:2006/03/07(火) 02:27:47
ポインタはポインタでしかない。
いいからアセンブっとけ
143デフォルトの名無しさん:2006/03/07(火) 09:47:15
単にアドレスだと思ってしまうと、++したり、引き算したときに、はまる
NULLの内部表現が0でないマシンで、memset(...0...)したときに、はまる

かもな
144デフォルトの名無しさん:2006/03/07(火) 10:41:17
だってアドレスの値が入ってるじゃん!!!1
145デフォルトの名無しさん:2006/03/07(火) 12:59:25
>単にアドレスだと思ってしまうと、++したり、引き算したときに、はまる
はまんねーっていうかいったいどんな初心者想定して話してんだよw
146デフォルトの名無しさん:2006/03/07(火) 13:17:24
寧ろアセンブリに精通した人が++に混乱を生じるのでは?
ポインタだと必要サイズ分だけ移動だけど
アセンブリだと単純に次のアドレスでしょ?
147デフォルトの名無しさん:2006/03/07(火) 13:37:32
つまりはポインタの正しいイメージを頭に描いていれば
文法的知識があやふやでも正しくコーディングできるということか。






        正 直 ど う で も い い


148デフォルトの名無しさん:2006/03/07(火) 21:44:09
ポインタはアドレスを格納してる変数なんだけど、
「++」や「--」などの演算をした時は、
普通の整数などと「++」「--」の動作が違って、「必要サイズ分移動」という命令になる
整数等向けの「++」「--」と、ポインタ向けの「++」「--」は別の処理だ

っていう解釈でOK?
149デフォルトの名無しさん:2006/03/07(火) 21:54:30
>>148
変に勘ぐりすぎ。ポインタのインクリメントは、単に指す場所が一つずれるだけ。
そのときに実際のアドレスがどうなっているかは意識する必要がない。
150デフォルトの名無しさん:2006/03/07(火) 21:54:54
>>148
ていうか、まさに、ポインタの内容が、インクリメント/デクリメントするんだから、普通の整数と同じよん。

"char" と "char *" は大きさが違うってこと。
151150:2006/03/07(火) 21:59:53
ごめん、全然説明になってないorz
使いこなせているのに、人に説明するのは難しいorz
152デフォルトの名無しさん:2006/03/07(火) 23:08:09
                    _____
    / ̄ ̄ ̄ ̄\,,      /−、 −、    \
   /_____  ヽ    /  |  ・|・  | 、    \
   | ─ 、 ─ 、 ヽ |  |   / / `-●−′ \    ヽ
   |  ・|・  |─ |___/   |/ ── |  ──   ヽ   |
   |` - c`─ ′  6 l   |. ── |  ──    |   |
.   ヽ (____  ,-′   | ── |  ──     |   l
     ヽ ___ /ヽ     ヽ (__|____  / /
     / |/\/ l ^ヽ    \           / /
     | |      |  |     l━━(t)━━━━┥
                     _____
    / ̄ ̄ ̄ ̄\,,      /        \
   /_____  ヽ    / ______   \
   |        |  |   / /        \   ヽ
   |,,_   _,   |___/   |/ ,,_   _,     ヽ   |
   | "゚'` } "゚`   6 l   | "゚'` } "゚`      |   |
フッ  ヽ  __''_,    ,-′ フッ |   __''_,         |   l
     ヽ. ー__ /ヽ     ヽ   ー       / /
     / |/\/ l ^ヽ    \          / /
     | |      |  |     l━━(t)━━━━
153デフォルトの名無しさん:2006/03/08(水) 00:29:09
自分がポインタ理解できてるか不安です><
154デフォルトの名無しさん:2006/03/08(水) 00:29:58
ポインタのマスコットキャラクター:ポインたん
誰かデザインして
155デフォルトの名無しさん:2006/03/08(水) 01:36:04
ポインタなんか無くして、配列だけにしてptr[i++]とすれば、だれもアドレスが一つ増えるとは思わなく、
ptr配列の現在の項目・・・の次の項目を取得するとちゃんとわかっただろうね。
156デフォルトの名無しさん:2006/03/08(水) 01:40:09
>>155
はぁ?
ポインタも long *lptr; lptr++; とかやれば、アドレスは4進むけど、配列の次の要素に移るけど?
157デフォルトの名無しさん:2006/03/08(水) 01:48:19
だから、配列と機能が被るんだから、配列一本にすればよかったんだよ。
それとか、ポインタは配列の次の要素に進むのと同じ動きをしますと説明するとかさ。
158デフォルトの名無しさん:2006/03/08(水) 01:50:32
long *lptr; lptr++を実行すると、long型の配列の現在の要素の次の要素に移ります。
159デフォルトの名無しさん:2006/03/08(水) 04:52:43
デザインが悪かったってことだ。実際、バッファオーバーフローに
何十万人のプログラマーが苦しんだ (楽しんだ) ことか。。。
160デフォルトの名無しさん:2006/03/08(水) 07:24:00
ポインタができないとJavaもできないだろ
161デフォルトの名無しさん:2006/03/08(水) 09:38:33
次のC--言語でポインタなくして、
メモリ全体を表す_MEMORYって配列を用意することにしよう
162デフォルトの名無しさん:2006/03/08(水) 10:46:48
ポインタなんかなくても困らないだろ
ポインタなんて概念のある言語は糞
163デフォルトの名無しさん:2006/03/08(水) 10:49:01
もうちょっと気のきいた餌きぼん
164デフォルトの名無しさん:2006/03/08(水) 12:37:57
ポインタなんか生で使えなくても困らないだろ。
ポインタを生で使える概念のある言語は糞。
165デフォルトの名無しさん:2006/03/08(水) 14:26:21
>>159
バッファオーバーフローはコード書いた奴が阿呆なだけで
ポインタとは関係ないですね。
166デフォルトの名無しさん:2006/03/08(水) 14:27:51
>>157
原理主義者の間では、*ptr と ptr[0] は違うものとして認識されます。
167デフォルトの名無しさん:2006/03/08(水) 14:37:06
C言語@はじめてのCプログラミングには同じだって書いてありました!!!!111
168デフォルトの名無しさん:2006/03/08(水) 14:40:20
ポインタなんて、pointer[integer] ≡ *(pointer + integer)だって判ればそれで充分だろ。
*ptrは要は、*(ptr + 0)なんだからptr[0]に決まっているじゃないか。
169デフォルトの名無しさん:2006/03/08(水) 14:52:32
>>166
どこの原理主義者だか知らんけどただの半端もんじゃん
170デフォルトの名無しさん:2006/03/08(水) 16:50:46
>>165
バッファオーバーフローで泣くなんて>>159のところは
そうとうな馬鹿会社だったんだな
171原理主義者:2006/03/08(水) 17:28:25
>>168-169
配列ではないものを指すポインタに ptr[0] って、気持ち悪くね?
172デフォルトの名無しさん:2006/03/08(水) 18:41:17
>>171
全然。配列的に扱わない場合は参照を使うし。
173デフォルトの名無しさん:2006/03/08(水) 18:44:04
K&Rに異議を唱えるなんてとんだ原理主義者だな
174デフォルトの名無しさん:2006/03/08(水) 19:20:22
ポインタと配列の違いがよくわかりません
175デフォルトの名無しさん:2006/03/08(水) 21:19:23
関数ポインタがないと困る
176デフォルトの名無しさん:2006/03/08(水) 23:45:27
先輩がポインタのポインタって真顔で俺に真剣に説明してた時
「おまえって報われない性格だろ?」ってさりげなく思った
会社かわわっちまったけどどうしてるかなT先輩
177デフォルトの名無しさん:2006/03/08(水) 23:56:11
ボイン
178デフォルトの名無しさん:2006/03/09(木) 00:43:15
ちゃん
179デフォルトの名無しさん:2006/03/09(木) 01:02:32
いや、ポインタと配列のアドレスは違うものだろ。

char *ptr = new char[SIZE];

として生成されたものは、

delete [] ptr;

としないと、実行時エラーになるからな。
180デフォルトの名無しさん:2006/03/09(木) 04:06:41
>>179
いえ、そういう違いではなくて
void func( char *p, char a[256] )
{
...
}
のポインタpと配列aはなにが違いますか?
181デフォルトの名無しさん:2006/03/09(木) 04:15:07
全然違う
182デフォルトの名無しさん:2006/03/09(木) 06:06:00
全く同じ
183デフォルトの名無しさん:2006/03/09(木) 06:21:14
ヌルポインタをintにキャストしたとすれば、それは0ですか?
184デフォルトの名無しさん:2006/03/09(木) 06:23:11
>>180
違いはない

>>183
C++では0です
185デフォルトの名無しさん:2006/03/09(木) 06:33:39
>>179
「アドレスが違う」せいではない
それは、operator new[] の第1引数に渡される値が単に
要素数に比例するわけではなく、不定であることと同じ理由だ

全くいい加減なことをいう奴が多いな
186デフォルトの名無しさん:2006/03/09(木) 06:36:38
整数をポインタにキャストしてわけの分からないアドレスをぶっ壊して
パルプンテする事は可能ですか?
187デフォルトの名無しさん:2006/03/09(木) 07:10:27
ポインタから自由と責任を奪い取ったのが参照ですか?
188デフォルトの名無しさん:2006/03/09(木) 08:23:48
>>186
壊そうとする場所とそのとき動いているOSに依る。
189デフォルトの名無しさん:2006/03/09(木) 08:28:46
基本的に自分のプログラム領域しか破壊できませんか?
190デフォルトの名無しさん:2006/03/09(木) 08:57:04
VC++6なんだけど、

case文の内部で
int a ってかいたらエラーがでたんだけど、

int a[1] ってかいたらOkなのは何故?
191デフォルトの名無しさん:2006/03/09(木) 09:01:37
インライン展開とか二重定義とかそういうあれじゃね?
192デフォルトの名無しさん:2006/03/09(木) 13:02:21
>>189
MS-DOS や Win9x、Classic Mac OS ならやり放題ですが。
(だから「OS に夜」って書いてあんだろ?)
193デフォルトの名無しさん:2006/03/09(木) 13:25:15
w2kです
194デフォルトの名無しさん:2006/03/09(木) 13:27:49
やろうと思えば壊せる。
195デフォルトの名無しさん:2006/03/09(木) 17:39:48
>>189
暇なので通報しておきました
196デフォルトの名無しさん:2006/03/09(木) 18:09:13
>>189
自分のプログラムを破壊できるじゃんw

そして自分のプログラムが暴走して、
そのプロセスの権限で出来ること・・・たとえば
他のファイルの破壊などが可能。
197デフォルトの名無しさん:2006/03/09(木) 20:43:35
>>184

違いないんですか?
どういうこと?
さっぱりわからん
198デフォルトの名無しさん:2006/03/09(木) 21:36:34
>>197
関数の引数に於いて〜の配列型は〜へのポインタ型に読み替えられるという規則がある。
199デフォルトの名無しさん:2006/03/09(木) 21:43:39
それ違うんじゃないかな
>>180は256+4バイトスタックに積まれる気がする。
pはスタックに積まれている値を持って来て
aはスタックのアドレスを指すんじゃないかと。
テストコード書けばすぐわかるけど、面倒だからやらん。
200デフォルトの名無しさん:2006/03/09(木) 23:12:51
>>199
おまえの書いたコードは全部捨ててくれ
201デフォルトの名無しさん:2006/03/09(木) 23:55:42
ぶった切ってすまんが、俺はこのスレタイが妙に好きだ
ストレートで笑える
202デフォルトの名無しさん:2006/03/09(木) 23:56:21
>>199
釣りですか?
203デフォルトの名無しさん:2006/03/10(金) 00:05:37
ポインヨ死ね。
204デフォルトの名無しさん:2006/03/10(金) 12:05:56
>>183
正解を教える。C++においてもCと同様、ヌルのビットパターンは
ゼロだと保証されてはいない。ただ、以下のことが保証されている。

(たとえヌルのビットパターンがゼロでなくても)
char *p = 0; // 必ずヌルビットパターンが代入される
p == 0; // pがヌルビットパターンなら必ず真になる

ゼロと言う数字で代入したり比較してるのでヌルビットパターンが
ゼロビットの羅列でない時は直感的でないが、言語仕様として
そうなるように決められている。

ここを勘違いして、C++のヌルビットパターンはゼロだと思ってる人
が居るみたいだが、詳しくはD&Eを参照
205デフォルトの名無しさん:2006/03/10(金) 12:10:06
>>183の質問に関しては、お使いの環境を知らんけど、大概ゼロ
だろうね。と言っておいても困らないと思う。
206デフォルトの名無しさん:2006/03/10(金) 12:20:23
厳格な話をしてるのにそのレスはないだろう。とオモタ
207デフォルトの名無しさん:2006/03/10(金) 12:20:54
>>203
クレ板から来たのかw
208デフォルトの名無しさん:2006/03/10(金) 12:28:10
NULLが0じゃない環境を知りたいもんだ。とオモタ
209デフォルトの名無しさん:2006/03/10(金) 12:45:45
>>206
言語理論より商業で役に立つことが優先される実動作重視のC++らしい答えだ
210デフォルトの名無しさん:2006/03/10(金) 14:05:04
>>204
> (たとえヌルのビットパターンがゼロでなくても)
> char *p = 0; // 必ずヌルビットパターンが代入される
> p == 0; // pがヌルビットパターンなら必ず真になる

へー、全く知らなかった
整数の0と代入したり比較したりじゃないのか
211デフォルトの名無しさん:2006/03/10(金) 14:10:07
212デフォルトの名無しさん:2006/03/10(金) 23:36:11
>>211
そのサイトすげー勉強になる
213デフォルトの名無しさん:2006/03/10(金) 23:38:47
あたしポインヨ。よろしくネ!
/ハノ))
/*゚ー゚」
「(* *) (´Д`)ハア…
//*‖ >\ ハア…
// ‖ /<
214デフォルトの名無しさん:2006/03/11(土) 00:06:20
if(p = NULL)
はどんな判定になるの?
215デフォルトの名無しさん:2006/03/11(土) 00:09:56
>>214
char* p;
だったとして
pがぬるぽ
ifはNULLを評価→偽
216デフォルトの名無しさん:2006/03/11(土) 08:34:11
>>215 NULL が (void*)0 じゃなかったとしても偽なのかな
217デフォルトの名無しさん:2006/03/11(土) 08:39:46
NULLの内部表現にかかわらず
if(p) は if(p != 0)と同じ
218デフォルトの名無しさん:2006/03/11(土) 22:20:35
NULLは0とは限らないんでしょ?
219デフォルトの名無しさん:2006/03/11(土) 22:27:20
そうだ、内部表現は0とは限らない
だけど
int型にdouble値を代入しようとするときに、小数点以下が切り捨てられてて適切に値が変換されるように
ポインタに0を代入したり比較するときも、適切に変換されてヌルポインタ値を使う
220デフォルトの名無しさん:2006/03/11(土) 22:45:26
そんなことせずに、コンパイルエラーになれば
糞コードは減った。
221デフォルトの名無しさん:2006/03/11(土) 22:52:02
NULLは0じゃないけど0はNULLだ。
222デフォルトの名無しさん:2006/03/11(土) 22:56:07
じゃあ、NULLを廃止して0にすればすべて解決だな。
223デフォルトの名無しさん:2006/03/12(日) 00:53:39
NULL って (void*)0 とされてることが多いと思うんだけど、
これは NULL って単に人間にとっての分かりやすさのために
定義されているマクロなんだよな。

ポインタとしての 0 は常にヌルポインタであって、
それはアドレスとしての 0x00000000番地 ではないわけだけど、
とすると 0x00000000 番地に書き込みたいときは

    int* p = (int*)0;
    *p = 12345;

とかやっちゃっていいもんなんだろうか。いや、そんなこと
やりたいと思うケースは少ないと思うけど。インラインアセンブラ
使うべき?
224デフォルトの名無しさん:2006/03/12(日) 00:56:11
ポインタに絶対番地に指定して読み書きなんてハード叩く時には普通にやるぞ。
225デフォルトの名無しさん:2006/03/12(日) 00:56:49
やらないよ
226デフォルトの名無しさん:2006/03/12(日) 00:57:52
それができるのはポインタがアドレスになってるアーキテクチャだけってこと
わかってやってるんなら何だってやっていいのがC
227デフォルトの名無しさん:2006/03/12(日) 00:58:55
>>225 組み込みではあると思われ。
228デフォルトの名無しさん:2006/03/12(日) 01:00:06
「ポインタがアドレスになってるアーキテクチャ」

つまりその保証は C の規格の外、ということか。
229デフォルトの名無しさん:2006/03/12(日) 01:45:52
…関数ポインタとかも氏ね。

はい,じゃぁネタしまーす。

int, double, char〜
230デフォルトの名無しさん:2006/03/12(日) 01:54:59
this と加茂市ね。
231デフォルトの名無しさん:2006/03/12(日) 02:28:47
まあ、thisは参照のほうがいいとは思う。
歴史的な理由により、ポインタだけど。
232デフォルトの名無しさん:2006/03/12(日) 02:33:36
#define This (*this)
233デフォルトの名無しさん:2006/03/12(日) 03:01:41
ボインたんもいらね
234デフォルトの名無しさん:2006/03/12(日) 05:10:05
ポインタのお陰でC/C++はレーシングカーになれる。
ちゃんと運転できないと、簡単に事故ってメチャメチャになるけどね。
Javaはラリーカーだね。
235デフォルトの名無しさん:2006/03/12(日) 05:12:55
あ?
JAVAなんてゴーカートだろ
それも動物の形してるやつで50円入れたら動くやつ
236デフォルトの名無しさん:2006/03/12(日) 06:24:13
あれって年に一回ぐらい結構マジで欲しくなるときがあるよな!
237デフォルトの名無しさん:2006/03/12(日) 06:30:08
んなわきゃない
238デフォルトの名無しさん:2006/03/12(日) 06:43:23
マジで?アレに乗って小銭が続く限りどこまでも、とか想像しないのか?
239デフォルトの名無しさん:2006/03/12(日) 11:04:12
レーシングカーとラリーカーの違いを教えてください
240デフォルトの名無しさん:2006/03/12(日) 11:41:12
>>238
あるあ・・・・・・あるあるwwww
241デフォルトの名無しさん:2006/03/12(日) 14:05:51
屋根に電気流した金網張って、そこにポールを接触させて
電気で動く車あったじゃん。
あれって、金網と床を同時に触ったら感電するの?
242デフォルトの名無しさん:2006/03/12(日) 16:55:44
宣言では、型の方に* 付けるようにしている
int* 型という型があるというイメージで

でもこれだと幾つもint* 型があるなら
何回もこれ書かないといけない。
後ろに書いても良いならint型の所でまとめて宣言できるけど
243デフォルトの名無しさん:2006/03/12(日) 21:42:56
どうして、そのような表記方法が広まったのだろう。気持ち悪いよ。
244デフォルトの名無しさん:2006/03/12(日) 21:53:09
つか、int *型のaとbを一つの宣言で宣言してみろってんだ
245デフォルトの名無しさん:2006/03/12(日) 22:59:32
int *a, *b;
246デフォルトの名無しさん:2006/03/13(月) 00:12:45
>>242
typedefすればいい
247デフォルトの名無しさん:2006/03/13(月) 00:28:01
>>239
最高速度
ラリーカーが逆立してもF1カーにはスピードで勝てない

しかしオフロードとなると話は一変する

最高速こそ遅くとも、ラリーカーは道悪での減速が他者よりも相対的に少ない。
248デフォルトの名無しさん:2006/03/13(月) 05:16:49
>>247
日本語でどうぞ。
249デフォルトの名無しさん:2006/03/13(月) 05:21:14
でもWindowsだってポインタで直接アドレスの操作できないよね
保護されてるから
250デフォルトの名無しさん:2006/03/13(月) 05:39:25
>>248
ようするにラリーカーはスピードでは中途半端だけど、アスファルトじゃなくても走るってことだよ。
251デフォルトの名無しさん:2006/03/13(月) 17:41:37
>>226
>それができるのはポインタがアドレスになってるアーキテクチャだけってこと
PL/M だけか。
252デフォルトの名無しさん:2006/03/13(月) 20:42:00
なんかもうポインタの話もアキテクチャった。
253デフォルトの名無しさん:2006/03/13(月) 21:09:32
ちょとワロタ
254デフォルトの名無しさん:2006/03/13(月) 21:34:22
>>1 ぬるぽ
255デフォルトの名無しさん:2006/03/13(月) 21:37:19
Cのポインタの仕様が悪いって話をすると
なぜかアドレスの話に刷りかえる人が出てくるのはしようがないことですか?
256デフォルトの名無しさん:2006/03/13(月) 21:45:54
つかCの仕様なんて本質的な部分は今更変えようがないし
後発のCとの互換性に縛られない言語はたいていうまいこと改善している。
今更Cの仕様をグダグダ言って何がしたいんだ?
257デフォルトの名無しさん:2006/03/13(月) 22:26:16
ポインタ兄貴凄かったです!!
ガチムチの色黒兄貴がオッス連呼で張型ケツにぶちこまれ腰振ってました。
俺もくわえさせられて浣腸喰らい無様に排便さらしました。
バリカン出されたときは一瞬引いたけど、兄貴の「いやなら止めていいんだぜ!」
の一言で覚悟決め、生まれて初めて丸刈りになりました。
その後、脇・チンゲも刈られてビンビンのマラ、思いっきりしごかれ
派手にガチムチ兄貴の顔に飛ばしました。スッゲー男らしく気持ちよかったです。
258デフォルトの名無しさん:2006/03/13(月) 23:04:15
ポインタが飛び回って蜘蛛の巣のようだ
259デフォルトの名無しさん:2006/03/14(火) 13:32:36
>>256
>今更Cの仕様をグダグダ言って何がしたいんだ?
「俺様が理解できないのは、仕様が糞な所為だ」
という事にしたいんだ。
260デフォルトの名無しさん :2006/03/15(水) 00:45:48
確かに今更Cの仕様をグダグダいってもしゃーねーわな
ただ、どっかの時点で、配列だけでもオーバーフローしたときに
エラーになるように、どっかの偉い人に規定を作ってほしかった
そりゃ
array[10]も、10[array]も
要は*( (array) + (10))だからしゃーねーだろ
って言われりゃごもっともだけど
せめて宣言時にarray[10]
ってしたときは使うときもarray[1〜10]にして欲しかった
ま、別に良いけど。
いまさらの話だし。
でももし、「じゃ、お前の言う通りに配列の最初の要素は1からにしてやるよ」
って言われたら、「いや、困る」って言っちゃうな、だってもう慣れちゃったもん
261デフォルトの名無しさん:2006/03/15(水) 00:53:52
>ってしたときは使うときもarray[1〜10]にして欲しかった
こういう発想の奴はCには向かない。
仮に完全にフルスクラッチでCを作り直したとしてもそうはならないだろう。
262デフォルトの名無しさん:2006/03/15(水) 00:57:08
ポインタ程度も分からんやつは死(ry
263デフォルトの名無しさん:2006/03/15(水) 06:29:43
なんだかんだ言って、
おまえら、ポインタ好きなんだろ?
264デフォルトの名無しさん:2006/03/15(水) 06:30:23
今ならポインタ10%増量
265デフォルトの名無しさん:2006/03/15(水) 07:40:13
int unko;
int *unko1;
int** unko2;

unko1 = &unko;
unko1 = NULL;

unko1 = *unko2;
unko1 = NULL;

それぞれの値をunko1に代入してからunko1にNULLを代入したとき、unkoとunko2の値はどうなるでしょう。
266デフォルトの名無しさん:2006/03/15(水) 08:49:16
どうにもならない。
unko1 = NULLになるだけ
267デフォルトの名無しさん:2006/03/15(水) 13:39:08
>>260
勝手にエラーで止まられては困る。
境界越えた領域を指定してメモリ記憶ぶっ壊したい時どうするんだよ?
268デフォルトの名無しさん:2006/03/15(水) 13:43:09
例外投げろ
269デフォルトの名無しさん:2006/03/16(木) 05:08:00
>>260
lintで指摘できれていればそれでいいってことはないのか。
270デフォルトの名無しさん:2006/03/16(木) 07:28:06
配列とポインタの概念が完全に混交してしまっている C病の人たちが集うスレはここですか?
まあ 配列とポインタをfusion させたCの設計者は偉いと思うけどね

一度pascal系で配列とポインタの概念を分離させるリハビリをしてみては如何?

   とのたまうDEL厨でした
271デフォルトの名無しさん:2006/03/16(木) 13:35:43
        ▲  
      /ハハハ\ 
    ./      \
   /   _   _  \ 
  |   ⊂・⊃ ⊂・⊃ |
 (|.    ∴  ∪ ∴ |   ./ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  .\      <=>  /  <   このスレ立てたのは藤木君だろ
    \_____/     \______________
272デフォルトの名無しさん:2006/03/16(木) 17:59:03
いや、知ってる人は知ってるだろうけど、俺だよ。
273デフォルトの名無しさん:2006/03/16(木) 18:05:25
ウソダドンドコドーン!
274デフォルトの名無しさん:2006/03/16(木) 18:19:07
>>270
「似たようなもん」という解釈で特に問題ないからOK
275デフォルトの名無しさん:2006/03/16(木) 18:27:09
>>274
OKなのはC言語だからでしょ
276デフォルトの名無しさん:2006/03/16(木) 18:30:12
もちろんそうよ
277デフォルトの名無しさん:2006/03/16(木) 18:31:02
エキスパートCプログラミング読めばいいと思う
278デフォルトの名無しさん:2006/03/16(木) 18:31:47
宣伝乙
279デフォルトの名無しさん:2006/03/16(木) 18:42:26
thx
いちいちお礼いってもらえてうれしいよ
280デフォルトの名無しさん:2006/03/16(木) 18:43:57
>>28
main() {
int a;
int i = (int)&a;

*(int *)i = 0;
printf("%d\n", a);
return 0;
}

結果
0

これは、合法です。
281デフォルトの名無しさん:2006/03/16(木) 18:48:35
16ビットの時代は int 幅 < ポインタ幅  だったからソレが使えなかったね
一部のマイコンのCは今でもそういうのが多い
282デフォルトの名無しさん:2006/03/16(木) 18:56:13
32bit以降は良い時代になったよね
283デフォルトの名無しさん:2006/03/16(木) 18:59:46
>>280
ある変数のアドレス演算子の結果をintにキャストした値をポインタ型にキャストして参照はがしすると元の変数となる
というのは、合法なの?
284デフォルトの名無しさん:2006/03/16(木) 19:01:01
合法です

これができるからC言語は強力なのだよ
285デフォルトの名無しさん:2006/03/16(木) 19:07:11
ということは<<281は非合法?
286デフォルトの名無しさん:2006/03/16(木) 19:13:02
ポインタ型が整数型で表現できない場合の動作は未定義である
287デフォルトの名無しさん:2006/03/16(木) 19:18:14
C言語ってなかなか都合がいいようになってんだな・・・
288デフォルトの名無しさん:2006/03/16(木) 19:28:52
>>281-286
そういうときにはintptr_t/uintptr_t。

C99の<stdint.h>或いはC++なら<boost/cstdint.hpp>で使える。
VC++の少なくとも7.1以上では独自拡張として<stddef.h>などにある。
289デフォルトの名無しさん:2006/03/16(木) 19:32:42
>>281
64bit時代もまたそうなるな
290デフォルトの名無しさん:2006/03/16(木) 19:33:45
>>289
int型で表現できなくても>>288のでいいんじゃないの?
よくわからんけどint型で表現できるとお得なことでもあるんですか?
291デフォルトの名無しさん:2006/03/16(木) 20:11:49
int型でいんとちゃう?
292デフォルトの名無しさん: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|
293デフォルトの名無しさん:2006/03/16(木) 21:07:56
>>290
int型じゃないけど、ポインタの値をSIMDに突っ込んで
高速にアドレス生成するような用途もあるから、アドレス
がポインタ変数の中だけの存在ではないという話。
294デフォルトの名無しさん:2006/03/16(木) 21:26:39
64bitになったら
>>280 みたいにintにポインタの値代入できなくなるのかな?
それともintが64bitになるのかな?
295デフォルトの名無しさん:2006/03/16(木) 21:27:55
intは8バイトになってlongが4バイトになるという奇跡が起こるかもしれない
296デフォルトの名無しさん:2006/03/16(木) 21:35:15
>>295
sizeof(long)>=sizeof(int)は仕様で決まってますが。

>>294
だから一部の環境では代入に警告が出るようになってきている。
297デフォルトの名無しさん:2006/03/16(木) 21:38:30
>>296
マジで?
298デフォルトの名無しさん:2006/03/16(木) 23:38:54
>>280
一緒に仕事したくないけど、どういうときに使うのコレ
299デフォルトの名無しさん:2006/03/16(木) 23:50:04
Javaで代用できるようなプロジェクトにはおそらく使いませんwwww
300デフォルトの名無しさん:2006/03/16(木) 23:58:30
くそプロジェクトで使われてるってこと?
301デフォルトの名無しさん:2006/03/17(金) 12:01:22
c/c++ と pascal (Delphi) との比較

・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] へのアクセス
302デフォルトの名無しさん:2006/03/17(金) 12:05:29
>>@buf[0]
>>pa^[3]
ププw
こんなダサい構文は思いついても普通実行(実装)に移さないよなw
それを平気でやってのけるDelphi開発者にしびれる憧れるぅ!
それを使うDelphierはゲロ以下の匂いがぷんぷんするぜぇ〜Www
303デフォルトの名無しさん:2006/03/17(金) 12:23:14
>>301
その気になればCでもできる、誰もやらないけど。

char buf[10];
char (*pa)[10];
pa = &buf;
(*pa)[3] = 1234;
304デフォルトの名無しさん:2006/03/17(金) 14:47:03
>>302
Delphi使ったことあるか?
Cマンセーの心揺らぐ出来だぞ
305デフォルトの名無しさん:2006/03/17(金) 14:54:41
Delphi好きだけどメモリ・ポインタ操作部分のコードは
はっきり言って気絶しそうなくらい汚い。
この点に関してDelphiのアドバンテージはない。
306デフォルトの名無しさん:2006/03/17(金) 15:03:54
PCの資源はたっぷり使いましょうってことです
307デフォルトの名無しさん:2006/03/17(金) 15:12:25
いや、Del厨がこのスレにしゃしゃり出てきて頓珍漢なことを言い出すのは
同じユーザーとして心が痛むってことです
308デフォルトの名無しさん:2006/03/17(金) 15:41:23
>>265
unko1 = *unko2; がコンパイラで削除されないなら、時々 アクセスエラーが出るんでしょう
309デフォルトの名無しさん:2006/03/17(金) 15:47:47
>>223
ハードを直接叩けるような環境なら、それでいいと思うよ。
でも、アセンブラで
_ADR0 .equ 0
.global _ADR0
みたいにしておいて

extern volatile int _ADR0[];
として _ADR0[0] を使う方が綺麗だよね
310デフォルトの名無しさん:2006/03/17(金) 16:50:09
>>305
もともとpascal自体が、メモリ・ポインタ操作を是としない思想の言語
だからな。 ある意味嫌がらせ的な言語使用になっている。
311デフォルトの名無しさん:2006/03/17(金) 16:57:36
それだったらいっそポインタ無しでも良かったのに
312デフォルトの名無しさん:2006/03/17(金) 17:12:41
windows API を叩く時とか、どうしても必要だから実用的な言語にするには
313デフォルトの名無しさん:2006/03/17(金) 17:17:38
delphiも昔は 動的にサイズを確保する配列なんかは cでいうmallocして free してたし
オブジェクトも、new 相当で作ってたけど、

いつの間にかclass型は出来るは、動的配列構文が出来るわで、ポインタは殆ど盲腸だな
314デフォルトの名無しさん:2006/03/17(金) 17:19:57
315デフォルトの名無しさん:2006/03/17(金) 17:26:54
>>313
よくわからんがpascalからobject pascalになっただけでは?
316デフォルトの名無しさん:2006/03/17(金) 17:45:50
delphiにあるメソッドポインタは面白いな

メソッドポインタ = クラス+関数ポインタ
317デフォルトの名無しさん:2006/03/17(金) 18:11:50
>>316 う〜ん、あんまりイメージがつかめん。
ファンクタみたいなもん?
318デフォルトの名無しさん:2006/03/17(金) 18:13:53
>>313
それがヘジィズムw
あの人のバランス感覚はちょっと壊れてるから
何でも言語仕様の拡張で対応しようとする。
319デフォルトの名無しさん:2006/03/17(金) 19:04:01
320デフォルトの名無しさん:2006/03/17(金) 19:46:35
>>319
http://www.genpaku.org/realprogrammerj.html
はFORTRAN ジョーク

ここはコッチでしょ
http://www.lysator.liu.se/c/bwk-on-pascal.html

ただ、Delphi等で拡張された文法ではこれらの批判は既に時代遅れとなっている
321デフォルトの名無しさん:2006/03/17(金) 20:00:27
Turbo Pascal 3.0 でとまってる俺。
322デフォルトの名無しさん:2006/03/17(金) 20:04:26
今更ポインタスレでオラが言語自慢している落ちぶれっぷりに涙を禁じえない。
323デフォルトの名無しさん:2006/03/17(金) 21:11:40
>>322
そっかあ。言語自慢しちゃったのかあ。可哀想に。
324ポインタ:2006/03/17(金) 21:14:18
僕のためにけんかしないで ><
325デフォルトの名無しさん:2006/03/17(金) 21:37:24
GC積んでる言語(Dとか)だと>>280みたいなキャストされると
追えなくなるんじゃない?
326デフォルトの名無しさん:2006/03/17(金) 21:42:29
面白いネタがあったので
http://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はこの批判をかわす拡張をしてきたように思えるな
327デフォルトの名無しさん:2006/03/17(金) 21:43:04
そこで pin_ptr ですよ!
328デフォルトの名無しさん:2006/03/17(金) 22:03:00
>>325
Dがどう実現してるのかは知らないけど、C#だとfixedで固定する仕様に
なってるな。でもってこれがコスト高いんだorz
Cを原点0として、Javaを10とするなら、C++は2.5くらいでC#が5だと思っ
たんだけど、fixedのコストを考えるとどうも7.5くらいなんだよな。
C#のunsafeはあくまでネイティブとのインターフェイス用と割り切って使
うものくさい。
Dが上手く5のところに嵌ってくれるなら面白くなりそうなんだけどな。
329デフォルトの名無しさん:2006/03/17(金) 22:03:13
>>325
D言語とかでは、そういうキャストは未定義としてるみたいだよ
330デフォルトの名無しさん:2006/03/17(金) 22:22:18
>>317 delgate の事では?
331デフォルトの名無しさん:2006/03/18(土) 00:07:02
delphiを1度貶めただけでこのスレの伸び。delphierは実に必死ですね。
332デフォルトの名無しさん:2006/03/18(土) 06:12:36
DelphiもCも素晴らしい
Javaは氏ね
333デフォルトの名無しさん:2006/03/18(土) 06:21:18
Groovyやろうぜ
334デフォルトの名無しさん:2006/03/18(土) 10:52:29
CやJavaはこんなところで多少貶められたところでどうってことないが
Delphiには死活問題だからなぁ〜
335デフォルトの名無しさん:2006/03/18(土) 12:14:39
おとしめられてどうこう、って言うことよりも、
現実に目の前にその言語であげなきゃならない案件があるわけだからなぁ。














おっさん COBOLer もそう言ってました。
336デフォルトの名無しさん:2006/03/18(土) 14:00:49
C++があれば何でもできる気がしてきた
手間はかかるが
337デフォルトの名無しさん:2006/03/18(土) 14:05:55
そうか、C言語にも _Bool で論理型が定義されたんだな

だから、論理型が必要な場面で他の型を書くと、論理型への隠れた型変換が働いているというように見るべきなのか
338デフォルトの名無しさん:2006/03/18(土) 14:34:45
いや相変わらずだ。
_Boolは整数型の1種。intへの昇格が存在する。
339http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:28:49
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?


340デフォルトの名無しさん:2006/03/18(土) 18:31:48
_Boolはただのtypedefか#defineだろ
341デフォルトの名無しさん:2006/03/18(土) 20:31:23
なんでいきなりboolの話…?
342デフォルトの名無しさん:2006/03/18(土) 22:26:46
boolなんてtypedef enum{false,true}bool
でよくね?
343デフォルトの名無しさん:2006/03/18(土) 23:24:42
>>340
ところがどっこいC99ではきちんと組み込み型の一種。
<stdbool.h>でtypedef _Bool bool;とされていると言う具合。
344デフォルトの名無しさん:2006/03/19(日) 10:30:40
int foo;
int * p = someintarray;

foo = p[1];

foo = *(p + 1);
では
どちらが機械語になった時に早いの?
同じ??
345デフォルトの名無しさん:2006/03/19(日) 13:51:07
>>344
使ってるマシンとコンパイラによって違うが、
大抵の場合は同一コードになると思う。
346デフォルトの名無しさん:2006/03/19(日) 18:01:38
悪い事は言わないから、
int *foo; と
int foo[]; を
ごっちゃにして使う悪習慣は改善しれ。
347デフォルトの名無しさん:2006/03/19(日) 18:12:32
別に悪習慣でもないんでもないと思うが
本質的に違うが同じように扱えるもんを同じように扱って何が悪いんだ?
お前頭固すぎ
348デフォルトの名無しさん:2006/03/19(日) 18:16:20
>>347
他の言語にパラダイムシフトした時に、わかるさ。
349デフォルトの名無しさん:2006/03/19(日) 18:25:46
ポインタなんてC以外で使う気ないもん
350デフォルトの名無しさん:2006/03/19(日) 20:19:07
>>346
具体的にどういう不都合があるか書いてよ。
納得したら考える。
351デフォルトの名無しさん:2006/03/19(日) 21:23:40
>>344
前者はfoo = 1[p];とも書けるので、どっちみち他の言語のような構文解析ではすまない。
従って、違うコードを出力するようなコンパイラを作る方がめんどくさい。
352デフォルトの名無しさん:2006/03/19(日) 21:30:30
>>351
はぁ?
コンパイラって、構文通りに解釈してコードを吐くんだよ?

オプティマイザかけても全く同じになるかどうか・・・気にはなるがな
353デフォルトの名無しさん:2006/03/19(日) 21:55:42
>>352
>351は端折りすぎだが。
要は、「配列」という特殊な構文はない。
従って、p[1]も*(p+1)も「pの値にsizeof intを足した値でポイントした中身」というような同じ構文と解釈するはずだ。
ということだろ。
354デフォルトの名無しさん:2006/03/20(月) 00:19:02
>>348
他の言語にパラダイムシフトした時に頭を切り換えられないバカは黙っとれ
355デフォルトの名無しさん:2006/03/21(火) 00:18:33
>>354
ヒント:移植
356デフォルトの名無しさん:2006/03/25(土) 17:05:21
ところで、「ポインタ死ね」とあるが、どうすればポインタを殺すことができるのだろうか。
357デフォルトの名無しさん:2006/03/25(土) 19:39:21
ポインタが誕生した時代にタイムスリップしてどうにかする
358デフォルトの名無しさん:2006/03/25(土) 21:08:57
まずはポインタの母親を捜すところから初めてはどうか
359側近中の側近 ◆0351148456 :2006/03/25(土) 21:13:05
(っ´▽`)っ
ポインタって言うからダメなんだよ。アドレスで。
360デフォルトの名無しさん:2006/03/25(土) 21:35:42
>>356
int * a; //生まれた
a = new int[4];
delete[] a; //死んだ
361デフォルトの名無しさん:2006/03/25(土) 21:36:25
ポインタが誕生した時代にアンドロイドを送り込んで開発者を抹殺する。
いやそいつ一人を殺したところで開発が停止するとは限らないから
「おまえの開発したポインタが数十年後に人類を危機に陥れる」
「いやそんなまさか、俺はそんなつもりでポインタを開発したわけじゃ・・・」
「科学者はいつもそう言う。原爆を作った奴もそういった」
みたいなやり取りで味方に引き入れ、開発室ごと爆破。
その後、C厨がポインタを守るために未来から送り込んだ敵のアンドロイドと死闘を演じ
最後は親指をつきたてながら溶鉱炉に沈んでいく。
362デフォルトの名無しさん:2006/03/25(土) 23:00:46
>>361
無駄無駄w
363デフォルトの名無しさん:2006/03/25(土) 23:03:58
>>360
生まれる時が違うぜ? そこじゃ、まだ精子と卵子が出会ってないw
364デフォルトの名無しさん:2006/03/25(土) 23:34:00
どこの子でも子供は子供だろ
システムの中の子でもOK
365デフォルトの名無しさん:2006/03/25(土) 23:59:57
>>364
うんにゃ ちげーよ

delete[] a; で死ぬのは、a = new int[4]; で生まれた int[4]; の方
a自体はまだ生きてるから、この後、 a = NULL; とかもできる。

ポインタってそんなもんさ。
366デフォルトの名無しさん:2006/03/26(日) 01:27:55
C言語のコーディング規約で「ポインタは使用しない」とかやって見る。
開発者が死ぬな。氏ぬじゃなく、死ぬな。
367デフォルトの名無しさん:2006/03/26(日) 01:31:05
ポインタ使用しない、ってことは
ポインタ変数の変わりに整数型の変数を用意して
キャストしまくれ、ってことでおk?
368デフォルトの名無しさん:2006/03/26(日) 01:35:04
キャストもポインタを型として使っているので×。
「乗算および文字列リテラル以外での'*'の使用を禁止する」みたいな。
369デフォルトの名無しさん:2006/03/26(日) 02:34:55
ポインターは殺せるけどな。
俺はそういう趣味はない。
猫ならできるけどな
370デフォルトの名無しさん:2006/03/26(日) 03:51:54
>>366
もしかするとC99なら何とかならんことはないかもしれない
が、ポインタを使うライブラリが一切使えないということになるから
やっぱり現実的ではないな・・・
371デフォルトの名無しさん:2006/03/26(日) 03:54:27
>>360
その時点ではまだ死んでないぞ、そのコードがある関数を抜けたら勝手に死ぬ
372デフォルトの名無しさん:2006/03/26(日) 04:04:48
ポインタ使うな、なんていわれたらそのプロジェクト抜ける
373デフォルトの名無しさん:2006/03/26(日) 04:28:56
なるべくポインタでなく配列として扱うようにしてるな。
添え字用の変数が増えるけど、まじめなプログラムなら
どうせ範囲チェックもしなきゃだからコスト的には
大して変わらんと思う。
374デフォルトの名無しさん:2006/03/26(日) 11:33:13
でも、大きい配列だと処理がポインタでやるより遅くなるって書いてあるけど本当?
375デフォルトの名無しさん:2006/03/26(日) 11:41:33
ポインタじゃなくても要は参照で渡せばいいんでしょ
376デフォルトの名無しさん:2006/03/26(日) 17:38:31
>>361
次回作はさらに進化したJava参照(美人)が相手です
377デフォルトの名無しさん:2006/03/26(日) 18:05:07
珍走団と同じようにまずは名前を変えてみんなに使う気をなくさせる。
というわけで「ポインタン」に1票。
378デフォルトの名無しさん:2006/03/26(日) 20:08:48
>>374
今時なら遅くは無いな

その遅さが致命的になる条件なら
なんだってやってやるが、まずは
保守しやすいのが最優先だ
379デフォルトの名無しさん:2006/03/26(日) 20:52:40
ポインタにテロ攻撃を仕掛けてやる
380デフォルトの名無しさん:2006/03/26(日) 22:25:13
俺はボインタンが好きだな
381デフォルトの名無しさん:2006/03/27(月) 02:03:34
charをチャーというやつも何とかしてくれ>>379
382デフォルトの名無しさん:2006/03/27(月) 06:50:17
>>373
ポインタ無しでどうやって関数使う?
383デフォルトの名無しさん:2006/03/27(月) 06:51:28
>>381
それは俺に対する宣戦布告だな?

ちなみにstrlenはストラレンではなくスターレンと読みます
384デフォルトの名無しさん:2006/03/27(月) 07:02:09
>>382
バッファ等でポインタを要求してるところには
ポインタ代わりに配列をつっこんでますよ
構造体なんかのを要求してるところは
まあしょうがないと割り切るけどさ。
要は心構えの問題だよ。

C++は知らん
385デフォルトの名無しさん:2006/03/27(月) 07:06:44
それはいい心構えですね
386デフォルトの名無しさん:2006/03/27(月) 07:14:25
>>384
だが、その関数の定義にはどうしたってポインタが必要ですね
387デフォルトの名無しさん:2006/03/27(月) 07:47:20
>>384
呼び出すのは関数ではなく関数ポインタ。
渡すのは配列ではなく配列へのポインタ。
お前はポインタから逃れられていない。
388デフォルトの名無しさん:2006/03/27(月) 07:49:12
>>387
逃げてるんじゃないよ!
立ち向かっているんだ!

とか言ってみる。
389デフォルトの名無しさん:2006/03/27(月) 11:14:21
>>384
釣りなのか頭が悪いのか
390デフォルトの名無しさん:2006/03/27(月) 11:47:52
確かに参照使った方が脳神経が休まるね。
391デフォルトの名無しさん:2006/03/27(月) 11:54:32
量子コンピュータとか出てきたら逃れられるかもしれない……
392デフォルトの名無しさん:2006/03/27(月) 12:35:30
>>391
いや、仮想メモリを生成しアドレスを固定してポインタ演算w
393デフォルトの名無しさん:2006/03/27(月) 13:08:11
あらゆる変数のタイプの1つとして無意識に使えるようになってないうちはまだまだアマちゃんよ
394デフォルトの名無しさん:2006/03/27(月) 14:41:41
最近の学習書は、ポインタの勉強に『アセンブラかじれや!』とか
言わないの?
漏れは68000かじったぞ?
御蔭で8086嫌いがより一層深まったけどね(藁
395デフォルトの名無しさん:2006/03/27(月) 23:29:57
やぱやっといたほうがいいよね
何が手ごろだろう
396デフォルトの名無しさん:2006/03/27(月) 23:31:10
アセンブラからCに移ったけどポインタはわけがわからなかった
どう考えてもアドレスじゃないし
397デフォルトの名無しさん:2006/03/28(火) 00:34:06
>>396
おまいはCが吐き出すアセンブラコードを見ないで育ったくちだな?
398デフォルトの名無しさん:2006/03/28(火) 00:51:41
基本的にアセンブラやBASICにはコンパイラという概念がないからな。

399デフォルトの名無しさん:2006/03/28(火) 10:49:54
>>398
BASICコンパイラなんて普通にあっただろ。
400デフォルトの名無しさん:2006/03/28(火) 11:28:59
多分BASICコンパイラーを知らないんだと思う
DOS時代、又はそれ以前はBASICコンパイラーがあった
401デフォルトの名無しさん:2006/03/28(火) 11:30:48
>>400
>DOS時代、又はそれ以前はBASICコンパイラーがあった
それ以前のBASICコンパイラについて詳しく。
402デフォルトの名無しさん:2006/03/28(火) 11:47:25
>>401 漏れは OS-9 Level2 on FM-11 AD2 で
Basic09 コンパイラを使っていました。
あ、でも Basic09 コンパイラは 6809 のネイティブ
には落とさなかったか。
403デフォルトの名無しさん:2006/03/28(火) 11:56:50
>>401
HSPみたいに中間コードを吐く形式でネイティブじゃない
だが、一部機種で徹底的に最適化されたコードを吐くコンパイラーが
ユーザーサイドで作られ開発されたりもしたが・・・

要はインタープリタ→中間コード生成→マシン語なんだけど、中間コード生成に掛かる時間が遅かったわけだ、
だから最初に中間コードにコンバートしておけば生成に掛かる時間を省ける
そして実行速度も上がる
勿論アセンブラで組まれた物には敵わなかったが・・・
404デフォルトの名無しさん:2006/03/28(火) 12:17:37
そこでgameの登場ですよw
405デフォルトの名無しさん:2006/03/28(火) 14:04:42
BASICはデフォルトで変数の型がfloatというのが今にしたら
変に思う。
406デフォルトの名無しさん:2006/03/28(火) 15:12:11
>>401 >>403
CP/M 時代の MS BASIC-80 コンパイラが
確か Z80 ネイティブだったと思う。
407デフォルトの名無しさん:2006/03/28(火) 15:30:55
Quick Basic とかちょっと使った気がする。
408デフォルトの名無しさん:2006/03/28(火) 17:18:25
QuickBasicをコンパイラしたコードをCodeViewに掛けたら、
理解不能なコードを吐いてたのを覚えている。
Quick-Cのコードは単純明快だったのに、やはりBasicは
コンパイラ向きではないのかと思った。

でも確かBasicって、メインフレーム上のコンパイラ言語として
開発されたんだよな。インタプリタになったのはパソコンが初めて
らしいし。
409デフォルトの名無しさん:2006/03/28(火) 17:19:11
×QuickBasicをコンパイラした
○QuickBasicをコンパイルした

orz
410デフォルトの名無しさん:2006/03/28(火) 17:36:08
なにこの懐古スレ
411デフォルトの名無しさん:2006/03/28(火) 17:41:56
昔のPC板向けの話題だ。
412デフォルトの名無しさん:2006/03/28(火) 23:28:49
ポインタは解ったけど
ネストされるとやっぱり解らない・・・
413デフォルトの名無しさん:2006/03/28(火) 23:43:12
ポインタが分らないってよっぽど変なソースでも見たからじゃないのか?
414デフォルトの名無しさん:2006/03/28(火) 23:48:23
えーとね
const int * p1;
int const * p2;
int * const p3;
415デフォルトの名無しさん:2006/03/28(火) 23:48:33
MZ限定だと思うがWICSとかいうBASICコンパイラが馬鹿っぱやなバイナリー吐いた
416デフォルトの名無しさん:2006/03/28(火) 23:58:01
>>405
SORDのM5でBASIC-Gをいじってた俺は
整数型しか知りませんよ!
417デフォルトの名無しさん:2006/03/29(水) 00:09:33
>>1が死ねゴミ蛆
418デフォルトの名無しさん:2006/03/29(水) 00:36:04
>>416
8ビット機の頃って整数型が大半じゃないの?
X68000のX-BASICは実数を扱う事が出来たけど・・・
419デフォルトの名無しさん:2006/03/29(水) 00:42:21
414のをカッコ付けたり
*をもう一つ増やしたりしたらわかめ
420デフォルトの名無しさん:2006/03/29(水) 00:44:06
414の上2つは定数intへのポインタ
下は変数intの定数ポインタ
421デフォルトの名無しさん:2006/03/29(水) 01:18:39
今からやる世代は大変だな
PC98のVRAMいじればポインタなんて一発なんだがw
どうしてもエミュレータ使った分厚い洋書になってしまう
422デフォルトの名無しさん:2006/03/29(水) 01:28:38
なんで98は死滅したの?
423デフォルトの名無しさん:2006/03/29(水) 02:24:28
Windowsにふられたから
424デフォルトの名無しさん:2006/03/29(水) 02:39:29
> どうしてもエミュレータ使った分厚い洋書になってしまう
なんで?
425デフォルトの名無しさん:2006/03/29(水) 02:43:26
コンピュータアーキテクチャ的には98のレベルはどうだったの?
426デフォルトの名無しさん:2006/03/29(水) 03:28:59
32歳童貞くらいのレベル
427デフォルトの名無しさん:2006/03/29(水) 06:36:01
>>419
ポインタを引数に取りポインタを返す関数へのポインタの配列とかを
typedefを使わずに定義されてると一瞬うっととくるね。
自分の昔の(趣味の)ソースで時どきある。
書くときは頭の中にストーリー性があるので簡単なのだが、それをいきなり読み取るのはむずい。
428デフォルトの名無しさん:2006/03/29(水) 08:25:09
>>425
末期のPC-98はAT互換機とBIOSとサウスブリッジ(ISAのかわりにCバス)以外ほぼ互換。

で、そのNEC独自のサウス内蔵のIDEコントローラが酷い性能。
429デフォルトの名無しさん:2006/03/29(水) 08:48:15
>>414
typedef const int CINT;
typedef int *PINT;

CINT *p1, p2;
const PINT p3;
430デフォルトの名無しさん:2006/03/29(水) 10:44:13
typedef好きだなおま〜ら
431デフォルトの名無しさん:2006/03/29(水) 12:02:10
#define INT_PTR int*
432デフォルトの名無しさん:2006/03/29(水) 16:08:52
typedefて俺様仕様って事だよな?
433デフォルトの名無しさん:2006/03/30(木) 13:25:16
>>418
N88-BASICの場合、DEFINT A-Zと宣言しないと整数型にならなかった。
あと、X1にdB-BASICってな整数型BASICがあったと思ったけど、
ゲーム専用てな具合にバカにされていたような・・・。
ま、乱数求めると1未満の実数が返って来た時代だからなあ。
434デフォルトの名無しさん:2006/03/30(木) 13:35:36
>>433
普通に i% とすれば整数型も使えますが何か。
#まさか、 % をつけないといけないなんて言わないよね。defstr sすれば s$≡sなわけだし。
435デフォルトの名無しさん:2006/03/30(木) 21:54:55
>>434
流れが読めてない
436デフォルトの名無しさん:2006/03/32(土) 02:55:27
ポインタのポインタを配列にすして
それの先頭をポインタポインタポインタに入れるにはどうすれば良いですか?
437デフォルトの名無しさん:2006/03/32(土) 03:12:13
>>436
int **a[]; //ポインタへのポインタの配列
int ***b = a; //ポインタへのポインタへのポインタに代入
438デフォルトの名無しさん:2006/03/32(土) 03:42:38
char ********・・・****sとかで非連続領域の配列とかつくれないかな?
439デフォルトの名無しさん:2006/03/32(土) 03:53:02
char* s1[]={"abc","def","ghi"};
char* s2[]={"lmn","opq","stu"};
char ** pp[2];
char *** ppp;

pp[0] = s1;
pp[1] = s2;

ppp = pp


って書くとpppとppが同じになってしまう
いったいどうすれば?
440デフォルトの名無しさん:2006/03/32(土) 03:55:51
どういう動作を期待しているのですか
441デフォルトの名無しさん:2006/03/32(土) 04:00:29
ポインタポインタポインタがポインタポインタのアドレスを指すようにしてほしいです
442デフォルトの名無しさん:2006/03/32(土) 04:01:44
つ アドレス演算子 &
443デフォルトの名無しさん:2006/03/32(土) 04:06:56
ごめん、それでは上手くいかないのだ
ポインタ同士をつなぐのではなくて
代入したいのだ

char **pp
だけだと上手くいくのに配列にすると駄目
444デフォルトの名無しさん:2006/03/32(土) 04:29:09
ゴメン、439のままで出来た
coutで結果を表示する方を間違ってた
つまらないミス
445デフォルトの名無しさん:2006/03/32(土) 18:23:18
ポインタはたまらんな。
446デフォルトの名無しさん:2006/03/32(土) 19:17:51
vb坊ヒッシだな
447デフォルトの名無しさん:2006/03/32(土) 19:20:05
>>439
どこが難しいのかさっぱりわからん。
448デフォルトの名無しさん:2006/03/32(土) 19:20:59
便利だと思うが。ぽいんた。
つーかないと困る。
449デフォルトの名無しさん:2006/03/32(土) 19:21:00
450デフォルトの名無しさん:2006/04/02(日) 12:31:17
上のレベルのポインタに*付けて
文字列同じように表示すると
同じ型になるのに気付いた
451デフォルトの名無しさん:2006/04/02(日) 13:09:53
表示される文字が
1文字ならchar型
文字列ならchar*型だろこれ?

意外に単純?
452デフォルトの名無しさん:2006/04/02(日) 13:41:47
char*型は文字列を入れるものでは無くて、
メモリ上に存在する文字列(メモリ上に存在する
一文字の文字が連続領域に配置されたもの)の
ポインタ(最初のアドレス)を入れるものだよ。

ここでは便宜上文字列と言ったが、Cでいう文字列とは
通常文字の並びの最後に'\0'があるものだが、
char*型には最後に'\0'がこない固定長の文字列の
最初のポインタも入れられることに注意。

またこのchar*型に入ったアドレスは文字列の最初のアドレスだが、
インクリメントすることで、次の文字のアドレスにすることも可能。
453デフォルトの名無しさん:2006/04/02(日) 13:52:16
プログラムの中で
char* っての見たら文字列の先頭アドレスだと思って良い?

あとインクリメントする時は&つけて+1してから*つけて戻さないといけないよね?
454デフォルトの名無しさん:2006/04/02(日) 13:55:15
&付けるのって
上のレベルの型から指さないと
動かしたいそのものは指せないからだと思うんだけど
455デフォルトの名無しさん:2006/04/02(日) 14:18:14
>>453
ダメかもしれないけど俺はその認識でいいと思う
456デフォルトの名無しさん:2006/04/02(日) 14:27:20
char*型そのものを+1すると先頭の文字が移動するだけだった
&をつけてから+1して*で戻すと次の文字列に移動できたよ
457デフォルトの名無しさん:2006/04/02(日) 14:31:52
何の話してるんだ?
どうもアホっぽい匂いがするんだが・・
458デフォルトの名無しさん:2006/04/02(日) 14:35:08
>>456
それは理解しているようでとっても微妙な誤解をしている気がするので、
きちんとコードで書いて説明してみるといいと思う。
459デフォルトの名無しさん:2006/04/02(日) 14:40:57
char* abc[]={"abcdefghi","jklmnopqrstu"};
*(&abc[0]+1)とabc[1]
が同じで

abc[0]+1はbcdefghi

って事>>457
460デフォルトの名無しさん:2006/04/02(日) 14:49:12
それだったら&なんかつけないで
*(abc+1)で次の文字列に移るんじゃないの?
461デフォルトの名無しさん:2006/04/02(日) 14:58:22
>>460
それじゃ絵的に映えないだろ
462デフォルトの名無しさん:2006/04/02(日) 15:56:43
なんだそりゃw
463デフォルトの名無しさん:2006/04/02(日) 15:58:03
abc[1]が直感的
464デフォルトの名無しさん:2006/04/02(日) 15:58:22
>>460
それだとエラーでた
465デフォルトの名無しさん:2006/04/02(日) 16:03:41
>>464
やってみたが少なくともBCCならエラー出ないぞ?
何使ってるんだ?
466デフォルトの名無しさん:2006/04/02(日) 16:11:19
VC++

多分
abcてのがabc[0]と等しいから+1で
アドレス+1(4かも)になってbcdefghiを指すポインタの中身
ポインタの中身を*で中身を取り出す事はできないからだと思われ
467デフォルトの名無しさん:2006/04/02(日) 16:13:41
abcと同じ値なのは&abc[0]だぞ
468デフォルトの名無しさん:2006/04/02(日) 16:16:48
ごめん、それは間違ってるな
でも実際に打ち込んだのはabcの方だから
多分合ってる
469デフォルトの名無しさん:2006/04/02(日) 16:20:05
なにをしようとしたらどんなエラーが出たの?
*(abc+1)の型はchar*だよ?
470デフォルトの名無しさん:2006/04/02(日) 16:23:15
>464
そりゃ(警告)でるよ。配列とポインタを混合するなって。
配列として定義しているのにポインタと混同して使うと混乱してバグ発生の
原因になるから使わないようにと警告を出す。というなら納得できるか?

>463のやり方がセオリーとしては正しいだろ?コマンドラインの参照(argvを参照する)も普通はそうするはずだし。
安易に参照使うなって事。この辺のは濫用すると混乱の元。
471デフォルトの名無しさん:2006/04/02(日) 16:28:16
cout <<(*(abc+1)<<endl

1>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: '<<' : オーバーロード関数のうち、どれを呼び出すのか決定できません。

エラーだぞ
472デフォルトの名無しさん:2006/04/02(日) 16:31:49
>>471
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんなエサで俺様がクマ――!!
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
                               (´⌒; (´⌒;;;
473デフォルトの名無しさん:2006/04/02(日) 16:35:20
どこかおかしい?
474デフォルトの名無しさん:2006/04/02(日) 16:36:03
>>470
そんなんで警告出すやつあんのか?
別にコマンドライン引数をchar **argvとして*(argv+1)とかargv[1]とかしても何も問題ないはずだと思うけど

>>473
括弧の数ぐらい数えてよ(´・ω・`)
475デフォルトの名無しさん:2006/04/02(日) 16:46:45
>>474
キタ━━━━ヽ(☆∀☆ )ノ━━━━!!!!
476デフォルトの名無しさん:2006/04/02(日) 16:54:13
でも、&abc[0]をabcに書き換えただけだから同じで当然か
打ち込みミスすまそ
477デフォルトの名無しさん:2006/04/02(日) 17:07:23
つまり
abcてのはabc[0]ってポインタのアドレスの事なの?
478デフォルトの名無しさん:2006/04/02(日) 17:10:41
abc[0] のアドレスと abc のアドレスって
C以外の言語でも 同じだって保証されてるの?
479デフォルトの名無しさん:2006/04/02(日) 17:26:05
abcはabc[0]の先頭アドレスだろ
480デフォルトの名無しさん:2006/04/02(日) 17:30:18
あっアホな発言したスマソ
481デフォルトの名無しさん:2006/04/02(日) 17:39:57
気にするな俺なんて ( 見落とした上にabcをポインタと勘違いしてるからね
482デフォルトの名無しさん:2006/04/03(月) 12:21:24
ポインタの何が嫌いかって「*」コレだよコレ
なんで「*」なんだ?
だいたい「*」は乗算の演算子だろうが
「/*」と「*/」でコメントだと?割って掛けてどうしようってんだ

それとな「&」こいつも気に食わない
AND演算子の癖に他の意味で使うんじゃね〜
483デフォルトの名無しさん:2006/04/03(月) 12:55:10
そのうちハンドル ^ とかも
よく見かけるようになるのかな。
484デフォルトの名無しさん:2006/04/03(月) 13:52:36
>453
> プログラムの中で
> char* っての見たら文字列の先頭アドレスだと思って良い?
良い場合が殆どだとは思うがそうじゃない場合もあるので注意

485デフォルトの名無しさん:2006/04/03(月) 16:03:52
char unko = 'u';;
char* u = &u;
486Visual C++ 2005 Standard Edition:2006/04/03(月) 16:46:08
>>485
error C2440: '初期化中' : 'char **'から'char *'に変換できません。
487デフォルトの名無しさん:2006/04/03(月) 17:23:00
>>485
何がしたいねん、おまえ
488デフォルトの名無しさん:2006/04/03(月) 17:44:19
char unko = 'u';;
char* u = &unko;
u++;
u=''\0';
489デフォルトの名無しさん:2006/04/03(月) 19:05:32
>>488
だから、何がしたいねんおまえ。
その一バイトインクリメントした先のアドレスに
null文字いれたいんか?
あかんで。怒られるで。
490デフォルトの名無しさん:2006/04/03(月) 19:12:33
char unko, kintama;

とやっておいて、>>488のような事をすると、あ〜ら不思議。kintamaが
'\0'になっちゃいました〜!ってな事も処理系によっては起きるかもな。
491デフォルトの名無しさん:2006/04/03(月) 19:48:36
かもな。
492デフォルトの名無しさん:2006/04/03(月) 19:59:18
その前に >>488 はコンパイルできないけどな。
最後の行が
u='\0';
なら問題ない。'\0' → 0に変換 → u にヌルポインタ代入。
493デフォルトの名無しさん:2006/04/03(月) 20:02:15
char* u = &u

&uがchar**型
uがchar*型で
OK?
494デフォルトの名無しさん:2006/04/03(月) 20:30:08
void someImportantFunc(char** c)
{
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);
495デフォルトの名無しさん:2006/04/03(月) 20:31:23
>493
それは両辺とも同じ名前の変数("u")が入っている初期化だからエラーになるだけ。

よく考えれば分かるけどそれで通ったとすると無限悪循環になるから。
(&uがchar*****型でuがchar****型でもいいわけだし。)

これなら通る。

char** k = NULL;
char* u = &k;

>482
それを言い出したらASCII文字だけでは記号が足りないんだが。
単語の組み合わせ方で文の意味が変わるように、記号の組み合わせ方で
意味合いが変わるようにでもしないと無理な状態なんだし。
後は書き方次第。
496デフォルトの名無しさん:2006/04/03(月) 20:35:39
ところがどっこい・・・!そんなコードは通りません・・・!
497デフォルトの名無しさん:2006/04/03(月) 21:00:14
逆だった。
char* k = NULL;
char** u = &k;

ちなみに>495のもこうすれば通る。
char** k = NULL;
char* u = *k;
498デフォルトの名無しさん:2006/04/03(月) 22:36:45
ポインタって
char *** pointer ;
までしか役にたちそうもないね
499デフォルトの名無しさん:2006/04/03(月) 23:34:48
C++なら *& とか **& の方を多用するけどな。
500デフォルトの名無しさん:2006/04/04(火) 02:31:16
>>1 ←これが"ポインタ"

このポインタの指す先が、
http://pc8.2ch.net/test/read.cgi/tech/1141028162/1 って"アドレス"

中身が>>1の書いた文章。

みたいな説明ならわかるかなぁ?
501デフォルトの名無しさん:2006/04/04(火) 09:22:58
かなりまちがい
502デフォルトの名無しさん:2006/04/04(火) 10:57:35
ぶっちゃけ(゚听)イラネ
503デフォルトの名無しさん:2006/04/04(火) 11:33:41
もう僕は参照のとりこです。
今まで書いたソースもできるかぎりポインタ渡しから参照渡しに書きなおしてます。^^
504デフォルトの名無しさん:2006/04/04(火) 15:20:40
>>498
つーことは、充分役に立ってるってこったな
505デフォルトの名無しさん:2006/04/04(火) 19:02:43
参照なんて温いことしてんじゃねぇ!
男なら黙ってポインタだろ
506デフォルトの名無しさん:2006/04/04(火) 19:26:43
>>500
そんな比喩使わんでもふつーに分かるやろーも
どうせ後でふつーに転換せなあかんわけやし

つーか、ポインタってむずいか?
なにがむずいのかオレにもわかるように説明してくれ
507デフォルトの名無しさん:2006/04/04(火) 19:31:57
ポインタへのポインタがからむと難しい
**pと*pの区別がつかなくなるときがある
508デフォルトの名無しさん:2006/04/04(火) 20:11:16
それは重症ですね
509デフォルトの名無しさん:2006/04/04(火) 20:12:08
それはただのアホじゃないのか?
510507:2006/04/04(火) 20:33:26
**pも*pもどっちもポインタを格納してて、
違いはといえばその格納しているアドレスに何が入っているのか、ってことは分かるけど
どっちもポインタを格納しているってところで、感覚的に区別がつかなくなるんだよ
そういうときは当然図を描いて矢印引っ張っていって、
矢印の先の型がなんなのかちゃんと確認しながらやると分かる
慣れてる人は図なんて描かないでしょ?
511507:2006/04/04(火) 20:41:49
**pと*pの区別
じゃなくて
int **pって宣言したときの p と *p の区別だ
512デフォルトの名無しさん:2006/04/04(火) 20:59:14
本当はアドレスじゃないというツッコミはうっちゃとくとして
pはポインタのアドレス
*pはintのアドレス
と考えておけばいいんじゃね?
pにほかの型のポインタのアドレスを代入しようとしてもコンパイルエラーになるし。
513507:2006/04/04(火) 21:10:47
頭の中で整理できてないってだけなんだきっと
だから、p に入れるのか *p に入れるのかをよく迷う
514デフォルトの名無しさん:2006/04/04(火) 21:21:15
>513
こう考えてみては?

int** p;
こう宣言しているとき、
p は int** 型
*p は int* 型
**p は int 型
(&p は int*** 型、となるかは怪しい。)
515507:2006/04/04(火) 21:30:11
>>514
そうかわかった。「どっちもポインタを格納している」って考えてるからだめなんだ
ポインタ型はポインタ型でも int** と int* があるわけで
「ポインタの先に何があるか」を考えてるからこんがらがってるんだ。たぶん
なんかヒントになった気がする。ありがとうです
516デフォルトの名無しさん: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に代入している。


ただし、この説明は構文的にエラーにならないようになるだけであり、文脈によってはメモリ破壊を起こす記述も有り得るので注意が必要である。
517デフォルトの名無しさん:2006/04/04(火) 21:33:33
あ?まで読んだ
518デフォルトの名無しさん:2006/04/04(火) 21:37:16
>>516
すげーわかりやすい
5191:2006/04/04(火) 21:42:08
これのドコがわかりやすいのかがわかんね。
520デフォルトの名無しさん:2006/04/04(火) 21:49:23
ふむ、やはりわかってる人間の説明はわかってる人間にしかわからないのかな。
521デフォルトの名無しさん:2006/04/04(火) 21:59:46
>>516
ナイス
522514:2006/04/04(火) 22:18:22
>516
理論として言いたいことは分かった。概念として捕らえるのはこの説明では無理。
理論の説明しかしてないから基本的な「概念」を理解してる奴にしか通じない。
そして言葉遣いが横柄で嫌味に感じる。

さらにいうなら>520の言い分では「概念を理解でき無い奴は付いてくるな」「概念の説明は不要」と言ってるようなもの。
算数だって最初は概念で教えるというのに。
523デフォルトの名無しさん:2006/04/04(火) 22:22:02
それは被害妄想
5241:2006/04/04(火) 22:39:02
>>520
逆だべ
525デフォルトの名無しさん:2006/04/05(水) 00:20:52
>>516
ちゃんと理解してる人が書いてくれてるのなら
いろんな説明のしかたを読むことはとても参考になる

というわけで勉強になりますた
526デフォルトの名無しさん:2006/04/05(水) 00:57:57
516の説明は中々優れていると思うんだけどな。
527デフォルトの名無しさん:2006/04/05(水) 06:46:23
で、516を褒めてるやつの何%が自演だ?
528デフォルトの名無しさん:2006/04/05(水) 11:18:19
>516は「自分はこう理解してるよ」ってのを発表してるんであって,
わかってない人に教えてるんではないな
いや,オレも教えきらんけどね
529デフォルトの名無しさん:2006/04/05(水) 13:56:18
>>516
保存した
530デフォルトの名無しさん:2006/04/05(水) 17:46:15
>>516


>>519
偽物
531デフォルトの名無しさん:2006/04/05(水) 20:13:53
では再びどうやってポインタを殺すかについて議論しようか
532デフォルトの名無しさん:2006/04/05(水) 21:47:24
null pointer
533デフォルトの名無しさん:2006/04/05(水) 22:17:17
ポインタってメモリのことだから、
カナヅチでメモリを破壊すればいける。
ファイルポインタを考えて、HDDも破壊すれば全ておk。
534デフォルトの名無しさん:2006/04/05(水) 22:22:58
OK
お前ちょっと署まで来てもらおうか
535デフォルトの名無しさん:2006/04/05(水) 22:42:42
ネットワークポインタを殺すためにソフトバンクに爆だ(ry
536デフォルトの名無しさん:2006/04/05(水) 22:44:09
ポインタを殺すためにまずは「*」を殺そう。
ケツの穴みたいだし。
537デフォルトの名無しさん:2006/04/06(木) 00:51:14
(*´∀`)
538デフォルトの名無しさん:2006/04/06(木) 07:08:26
小学校の授業に英語入れるよりアセンブラを入れればいいと思う。
539デフォルトの名無しさん:2006/04/06(木) 10:04:58
あ、汗…ん……ブラっ、ハァハァ
となるからだめだと思うの
540デフラグさん ◆mRgSYalFkQ :2006/04/06(木) 10:49:24
あ、汗…ん……ブラっ、ハァハァ
となるからだめだと思うの
541デフラグさん ◆mRgSYalFkQ :2006/04/06(木) 10:50:00

  [;゚д゚] シッパイシマシタ
 /[_]ヽ
  | |
………、、あうかだだっととなのめらるんブラ思汗ァァハハ
542デフォルトの名無しさん:2006/04/07(金) 23:32:49
ポインタウザイから禁止ね。
543デフォルトの名無しさん:2006/04/08(土) 01:35:59
>>541
つーか、それデフラグと違うし
544デフォルトの名無しさん:2006/04/08(土) 10:42:42
>536
待て!
掛け算がやりにくくなる
545デフォルトの名無しさん:2006/04/08(土) 11:18:01
関数プロトタイプ宣言内で2次元配列引数の場合

char (*)[]

肛門にしか見えん
546デフォルトの名無しさん:2006/04/08(土) 11:28:33
社内でのコーディング規約に禁止のとこ
あったよね。
547デフォルトの名無しさん:2006/04/08(土) 11:51:58
void *
なにこれ?
548デフォルトの名無しさん:2006/04/08(土) 13:18:20
void型のポインタ
549デフォルトの名無しさん:2006/04/08(土) 13:24:45
void型の変数のアドレスを格納する型、ってことですか?
550デフォルトの名無しさん:2006/04/08(土) 13:26:20
voidは何も無いんだからvoid型に何か入れられるわけないじゃないか
551デフォルトの名無しさん:2006/04/08(土) 13:44:38
そうやってまたいじめる
552デフォルトの名無しさん:2006/04/08(土) 14:25:08
(;_;)
553デフォルトの名無しさん:2006/04/08(土) 15:19:22
(-_ - )キカナイネ
554デフォルトの名無しさん:2006/04/08(土) 17:03:23
variant型じゃねーの?
555デフォルトの名無しさん:2006/04/08(土) 18:55:52
マロックはvoid*返り血だったなw
556デフォルトの名無しさん:2006/04/08(土) 19:34:12
それが何か?
557デフォルトの名無しさん:2006/04/08(土) 21:46:28
読み方はマロックじゃなくてエムアロックだと思う
558デフォルトの名無しさん:2006/04/08(土) 22:08:28
void* malloc(size_t) でいいんだっけ?

>549
void*型は「ポインタの先は型指定なし」=「純粋にアドレスだけを格納する型」と考える。
559デフォルトの名無しさん:2006/04/08(土) 22:30:58
そういやvoid*インクリメントとかするとどんだけアドレス進むんだろ
560デフォルトの名無しさん:2006/04/08(土) 22:39:10
出来ないよ>インクリメント、デクリメント
某C言語入門本によると
「void*型ポインタは要素のサイズを持っていないので、これらの計算は不可能であり、また意味もありません。」
だってさ。
561デフォルトの名無しさん:2006/04/08(土) 22:54:20
そうなのか
1バイト進むとか変わらないとかを期待してたのに
562デフォルトの名無しさん:2006/04/08(土) 23:13:03
workはなんて読む? そう、ワークだね。
じゃあwalkは? そう、ウォーク。

だからmallocは正しくはモーロックだ。わかったね?
え? それはお前のことだって?
563デフォルトの名無しさん:2006/04/08(土) 23:16:04
何を言い出すんだお前は
564デフォルトの名無しさん:2006/04/09(日) 04:06:35
ポインタの利便性ってスコープ外での値の変換が出来るってことでいいの?
565デフォルトの名無しさん:2006/04/09(日) 04:22:43
ポインタをいじればうまくアロケータを作れる
566デフォルトの名無しさん:2006/04/09(日) 08:15:30
ポインタで世界を支配することはできなくても
世界を混乱に陥れることはできる
ビルなんか壊すより、よっぽど建設的だと思うな
567デフォルトの名無しさん:2006/04/09(日) 16:49:23
マロックカロックと覚えてたのに
568デフォルトの名無しさん:2006/04/09(日) 17:00:49
エムアロック
シーアロック
リアロック
569デフォルトの名無しさん:2006/04/09(日) 17:01:54
GlobalAlloch
570デフォルトの名無しさん:2006/04/09(日) 18:40:14
あろっち!
571デフォルトの名無しさん:2006/04/09(日) 20:46:56
グローバルアロッチ!
572デフォルトの名無しさん:2006/04/09(日) 21:26:30
あろっち!

   あろっち!

      あろっち〜〜〜〜!
573デフォルトの名無しさん:2006/04/09(日) 21:29:49
アロッチタン(・∀・)モエッ
574デフォルトの名無しさん:2006/04/09(日) 21:59:14
ポインタは死なない。
に、128アロッチ
575デフォルトの名無しさん:2006/04/09(日) 22:06:27
明日の気圧は1028アロッチ
576デフォルトの名無しさん:2006/04/09(日) 22:14:45
書くときに略してるだけで読む時まで略さなくてもいいのに。
577デフォルトの名無しさん:2006/04/09(日) 23:30:26
君とアロッチしたい!(*ノノ)キャー
578デフォルトの名無しさん:2006/04/10(月) 06:57:26
何この流れ( 'A`)
579デフォルトの名無しさん:2006/04/10(月) 07:05:20
>>562
母音oとaの読みが変わるのは 子音wのとき
それ以外は大体ローマ字読みで良い
580デフォルトの名無しさん:2006/04/10(月) 07:14:40
か、勘違いしないでよね!別にあんたとアロッチしたいんじゃないんだからね!
581デフォルトの名無しさん:2006/04/10(月) 09:40:09
>>579
small
すまる?
582デフォルトの名無しさん:2006/04/10(月) 09:58:36
 中身が解放されたのに、それを指すポインタが
生きているとダングリング・ポインタになってバグの
温床になる。

 そんな時は、ポインタ死ね。
583デフォルトの名無しさん:2006/04/10(月) 10:34:42
スマートポインタ市ね
584≠579:2006/04/10(月) 11:10:27
>>581
一般的に"al"は「おー」と発音するとそれっぽくなる。
従って、"small"→「すもーる」。
585デフォルトの名無しさん:2006/04/10(月) 11:25:23
ぁおーだけどね。
正確に発すると〔すまぉーる〕になるよ
586デフォルトの名無しさん:2006/04/10(月) 11:54:53
コンパイルオプションで、ダングリングポインタチェックや配列境界チェックのon/offを制御できるといいね。
#oragmaで性能的に気になるところでは意図的にはずせるようになっているとより便利。
587デフォルトの名無しさん:2006/04/10(月) 11:55:47
ぐまー。#oragmaじゃない、#pragma。
588デフォルトの名無しさん:2006/04/10(月) 15:57:12
オ ラ グ マ !! オ ラ グ マ !! オ ラ グ マ !!
589デフォルトの名無しさん:2006/04/10(月) 17:26:13
ポインタのおかげでメモリ内容の大移動とかせずにプログラムが書ける
わけだが...とまじレスしてみる。







JAVAなんて大っ嫌いだ。
590デフォルトの名無しさん:2006/04/10(月) 19:23:02
参照は似たようなもんだお
591デフォルトの名無しさん:2006/04/10(月) 20:23:30
Javaにだってポインタはあるって本に書いてありましたよ!!
Cしか学んでない俺はがっくりきたよ
592デフォルトの名無しさん:2006/04/10(月) 21:43:52
参照は小粒でもピリリと辛いってね
593デフォルトの名無しさん:2006/04/10(月) 21:49:39






                        え?








594デフォルトの名無しさん:2006/04/10(月) 22:21:15
>>591
Javaに無いのはポインタ演算。
595デフォルトの名無しさん:2006/04/11(火) 14:19:21
バイトコードとしては普通に間接アドレッシングはあるんだろうなぁ。
ってそれだったら普通の汎用プロセッサじゃん。
どうなん?
596デフォルトの名無しさん:2006/04/11(火) 14:43:21
>>595
そりゃあるだろうが
それと、Cでいうところのポインタと
何の関係が?
597デフォルトの名無しさん:2006/04/11(火) 14:51:48
>>594 が無いって書いたから。
598デフォルトの名無しさん:2006/04/11(火) 19:35:41
「Java の言語仕様にポインタがない」と言っているときに
「いやバイトコードの中にはある」とか言う人初めて見た。
599デフォルトの名無しさん:2006/04/12(水) 11:20:40
よくいるじゃん
意図的ミスリードかただの○○かは知らんけど
600デフォルトの名無しさん:2006/04/12(水) 14:14:06
「いやエラーメッセージのなかにはある」と言った奴のおかげで
「ぬるぽ」が産まれたわけで、そういう○○も世の中には必要だな。
601デフォルトの名無しさん:2006/04/12(水) 16:15:07
null pointer
602デフォルトの名無しさん:2006/04/12(水) 22:14:46
Javaにはポインタはないのになんで「ぬるぽ」はあるんですか?
みたいなくだらない質問がくるかもよ。
603デフォルトの名無しさん:2006/04/12(水) 23:00:53
イチオウオヤクソクネ
  Λ_Λ  \\
  ( ・∀・)   | | ガガガッ
 と    )    | |    人
   Y /ノ    .人   <  >__Λ∩
    / ) .人 <  >__Λ ∩Д´)/
  _/し' <  >_Λ∩Д´)/   / ←>>600
 (_フ彡 V`Д´)/   / ←>>601
            / ←>>602
604デフォルトの名無しさん:2006/04/12(水) 23:57:04
は?何でなぐんの?意味わかんねー
605デフォルトの名無しさん:2006/04/13(木) 00:59:27
なにぬかしとんねん
殴られるに決まっておろうが
Javaにはポインタはないんだからよぉ
606デフォルトの名無しさん:2006/04/13(木) 07:02:02
ポインタ→ボインだ
607デフォルトの名無しさん:2006/04/13(木) 07:08:01
ソースレベルの話してるのになんでバイトコード出してくんねん
608デフォルトの名無しさん:2006/04/13(木) 12:52:15
>607
お前さんは>598からの流れを読んでないのかい?
609デフォルトの名無しさん:2006/04/13(木) 14:06:56
俺のポインタが凄い勢いで硬くなってる
610デフォルトの名無しさん:2006/04/13(木) 16:42:32
あっ、それポインタだったんだ〜
てっきりtinyintかと思ってた
611デフォルトの名無しさん:2006/04/13(木) 19:22:19
でも中身NULLだから、どこも指してないと
612デフォルトの名無しさん:2006/04/13(木) 20:18:03
NULLNULLだぜ
613デフォルトの名無しさん:2006/04/13(木) 20:50:37
さすがPG童貞臭ぷんぷんだぜ
614デフォルトの名無しさん:2006/04/13(木) 22:12:29
いじめないでくれよ〜
ぼくはわるいポインタじゃないよ。
615デフォルトの名無しさん:2006/04/13(木) 23:35:26
ポインタ は ぶき です。
よろしいですか?
616デフォルトの名無しさん:2006/04/14(金) 06:56:14
コンピュータ上ではかなり強い武器だなw
617デフォルトの名無しさん:2006/04/14(金) 11:36:58
ドラクエでいうところの「もろはのつるぎ」
618デフォルトの名無しさん:2006/04/14(金) 11:53:46
>>617
ドラクエで言わなくても「諸刃の剣」だな。
619デフォルトの名無しさん:2006/04/14(金) 13:38:11
脆刃の剣
620デフォルトの名無しさん:2006/04/14(金) 18:14:26
皆殺しの剣じだと思う。
621デフォルトの名無しさん:2006/04/14(金) 19:04:01
ケンジって誰さ?
622デフォルトの名無しさん:2006/04/16(日) 00:10:03
もろ出しのケンジと聞いてすっころんできました
623デフォルトの名無しさん:2006/04/16(日) 19:27:18
あの〜、Vistaになったらポインタは64ビットになるのでしょうか・・・?
624デフォルトの名無しさん:2006/04/16(日) 19:45:53
XP と同じく、Vista にも 32 ビット版と 64 ビット版がある。
625デフォルトの名無しさん:2006/04/16(日) 21:33:21
x64じゃないならアドレスも32ビットでしか指せない
626デフォルトの名無しさん:2006/04/16(日) 22:59:36
指せるアドレスの数が4294967295から18446744073709551615に増えたからといってどうだというのだ
627デフォルトの名無しさん:2006/04/17(月) 06:51:06
>>623
ポインタは永遠の32歳です><
628デフォルトの名無しさん:2006/04/17(月) 07:17:58
64bitなんてサーバでもなけりゃ不要だろ
一つのアプリにとっては32bitのメモリ空間で十分だな
32bit仮想マシンが沢山作れるというシステムで PCの世界の最終形態はこうでしたで、いいんじゃないの?

この上は人工知能様の登場を待って、その方向性(たぶんポインタが無い世界)に移動だろ
629デフォルトの名無しさん:2006/04/17(月) 18:48:17
>>628
動画編集とかだと、全然たりませんけど。
630デフォルトの名無しさん:2006/04/17(月) 19:58:03
>>629
>>628は仮想メモリを知らんのだろ。
それよか、今まで32bitだった可変長引数がいつ移行されるのかが気になる。
631デフォルトの名無しさん:2006/04/17(月) 20:05:23
可変長引数が32bitってなんだ?
printfにdoubleわたせなかったのか?
632デフォルトの名無しさん:2006/04/17(月) 20:17:01
可変長引数の場合、char型はint型に、short int型はint型に暗黙に変換されるんだっけ?
そういう話?
633デフォルトの名無しさん:2006/04/17(月) 21:52:25
doubleは分割だろ。
可変長引数いつもどうやって調べてんだよ。
634デフォルトの名無しさん:2006/04/17(月) 22:06:42
640KBで充分だといっていた時代もありました
635デフォルトの名無しさん:2006/04/17(月) 22:16:06
メモリ16GBあれば、全部オンメモリで処理できて楽だなーと思うようなことはたまにある。
636デフォルトの名無しさん:2006/04/17(月) 22:21:32
>634
今みたいな馬鹿でかいデータを扱うわけでもなく、プログラム本体も小さく、シンプル(悪く言えば低機能)だった時代の話。
>635
16GBって、何を処理させるつもりだ?
637デフォルトの名無しさん:2006/04/20(木) 13:42:40
例えば100mmオーダーの板状のものを100nmオーダーの解像度で設計図を書いたとして、
これをベクタラスタ変換しようと思うと100μm程度のスライスにしてもあっさり1GBの8ビット諧調画像になるね。
隣のスライスとの整合性を取ろうとすると、更に倍。そいつをフィルタリングすると更に倍。
こういう応用だと4GBでも足りないなんて話が現実問題としてごろごろしている。
638デフォルトの名無しさん:2006/04/20(木) 13:55:34
ラスタにするのが間違い
639デフォルトの名無しさん:2006/04/20(木) 14:11:22
>>638
つまり、世の中間違いだらけだと?
光の波長程度の解像度が必要になると、どうしても光の回折などを考慮する必要が出るのだが。
640デフォルトの名無しさん:2006/04/20(木) 19:04:45
先端技術や高度な問題領域でメモリやCPUパワーを限界まで要求するのは分かるが
既存業務やアプリがどんどんでかく重くなるのは納得いかんなぁ
641デフォルトの名無しさん:2006/04/20(木) 19:11:29
そしてゲームはシンプルに戻った。
#厳密には二分化か。
オフィスソフトは?
642デフォルトの名無しさん:2006/04/20(木) 20:10:33
>637、>639
>638の言うとおりだよ。
まさかとは思うけどさULSIクラスのIC製造用の回路パターン(しかもダイ1個分じゃなくてウェハ1枚分)を全部オンメモリ処理させようとか
無茶な条件想定してない?(それじゃ10年以上も前のVLSI製造はどうやってたんだよ、ってことになるが。)
普通そういうのはプロッタ(専用のものかもしれない)で描いた上でカメラワークで縮小するべきじゃないか?
>光の回折などを考慮
そういうのは光学機器メーカーの腕の見せ所。PCには関係ないだろ。

ともかく、そんな異常に高い量子化精度のデータをPCで一括して扱おうとすること自体が間違い。

>641
アプリ屋の目論見がそういう方向に向かう限りなんだかんだで重くなり続ける。馬鹿みたいに機能が増え続けるだけ。結局全機能使いこなす意味もなくなる。
643デフォルトの名無しさん:2006/04/20(木) 22:38:36
間違いというか、そういうの処理するのが簡単に書けるじゃんって話じゃないの?
644デフォルトの名無しさん:2006/04/21(金) 01:18:45
>>642
まさかと思うのだろうけど、>637規模の話は実際転がっているよ。
間違いだろうがなんだろうが、実際あるんだから仕方がない。

生半可な知識で想像してないで、自分の知らない世界もあるんだと納得しておいたほうがいいよ。
645デフォルトの名無しさん:2006/04/21(金) 01:27:54
衛星写真とかの例でもいいんじゃね?
646デフォルトの名無しさん:2006/04/21(金) 01:36:57
気象解析もメモリ無駄食いするねぇ。
647デフォルトの名無しさん:2006/04/21(金) 02:20:03
プログラムからアドレス弄れるのってメジャーどこだと C, ASM, Pascal だけ?
648デフォルトの名無しさん:2006/04/21(金) 03:14:55
「アドレス弄る」がなにを指すのか知らんが、かつてのbasicにも立派にメモリ操作ステートメントがありましたな。
649デフォルトの名無しさん:2006/04/21(金) 17:44:14
>>646
そこで勘ピューターですよ
650デフォルトの名無しさん:2006/04/21(金) 22:41:02
651デフォルトの名無しさん:2006/04/22(土) 11:31:32
>つまり、世の中間違いだらけだと? 
>光の波長程度の解像度が必要になると、どうしても光の回折などを考慮する必要が出るのだが。 
→手法自体が間違いである事を否定している。

>間違いだろうがなんだろうが、実際あるんだから仕方がない。 
→手法自体が間違いである可能性を認めている。
652デフォルトの名無しさん:2006/04/22(土) 11:42:25
いやぁ、俺もさ。

先日、俺のパソコンで「いもうとシミュレータ」を作ってやろうと思ってさ。
いろいろ調べたんだけど、
何か、人間の体の細胞って 100 兆個以上もあるんだって?
この時点で、既に4GBに入らないよな。

確かに、この規模の話は実際転がっているよ。 
自分の知らない世界もあるんだと実感したね。
653デフォルトの名無しさん:2006/04/22(土) 12:09:50
何言ってるんだ
知ってる世界より知らない世界のほうが圧倒的に多いに決まってる
654デフォルトの名無しさん:2006/04/22(土) 12:30:40
それを実感できるかできないかは別の話
655デフォルトの名無しさん:2006/04/22(土) 14:26:19
>>653
何言ってるんだ
俺の知らない世界の存在など俺の世界には無関係だ
656デフォルトの名無しさん:2006/04/22(土) 22:28:28
>>651
>>間違いだろうがなんだろうが、実際あるんだから仕方がない。
>→手法自体が間違いである可能性を認めている。
間違い。単に実在することを述べているに過ぎない。
657デフォルトの名無しさん:2006/04/22(土) 22:30:51
>>652
最初は1個なんだから、1個から4GBに入る限界までで楽しめばいいよ。
658デフォルトの名無しさん:2006/04/23(日) 02:58:52
>>657
それはまずいだろ
せめて胎ン中から出るとこまではいかねーと
659デフォルトの名無しさん:2006/04/23(日) 06:23:46
ゾウリムシで我慢しとけばいいんだよ
660デフォルトの名無しさん:2006/04/23(日) 09:45:24
>>656
>間違い。単に実在することを述べているに過ぎない。 

普通、「述べているに過ぎない」文章のお尻には
「仕方がない」などという言葉は付かないと思うが? 
661デフォルトの名無しさん:2006/04/23(日) 15:16:12
俺らなんて所詮ゾウリムシ程度の存在なのさ
662デフォルトの名無しさん:2006/04/24(月) 17:40:19
お前だけだよ。一緒にすんなやwww
663デフォルトの名無しさん:2006/04/24(月) 20:04:03
>>662
ケイソウ乙
664デフォルトの名無しさん:2006/04/25(火) 01:40:59
>>663
アオミドロ乙
665デフォルトの名無しさん:2006/04/26(水) 10:36:23
64ビットPCのおかげで大きめの会社でも1円単位でのお金の計算がPCでできるようになる。
しかし、128ビット浮動小数点レジスタが実装されるわけじゃないから高精度の技術計算が
PCの仕事になるわけじゃない。しかし、8086+8087が後に統一されたように、浮動小数点
レジスタもパワーアップされるのも時間の問題だと思う。

そうなってくれたら、俺は定年後も自宅で研究ができるわけだが...
666デフォルトの名無しさん:2006/04/26(水) 10:38:40
666
667デフォルトの名無しさん:2006/04/26(水) 11:05:29
現在は80bitだが、これで精度が不足するわけかい?
668デフォルトの名無しさん:2006/04/26(水) 13:23:54
参照ってなんですか??
669デフォルトの名無しさん:2006/04/26(水) 17:11:17
>>668
こんな感じ。
#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の中身が渡される。
670デフォルトの名無しさん:2006/04/26(水) 17:29:18
>>668
ここが質問スレに見えるかい?
671デフォルトの名無しさん:2006/04/26(水) 17:34:43
>>669
なろほど。
ありがとうございました。
>>670
氏ね
672670:2006/04/26(水) 17:41:04
型通りのレスが頂けて、大変光栄に存じます。
673デフラグさん ◆mRgSYalFkQ :2006/04/26(水) 17:41:47
>>671

  [゚д゚] デフラグカンリョウ
 /[_]b
  | |
066679>>>>。。あいうがござしたとどなねほまりろ氏
674デフォルトの名無しさん:2006/04/26(水) 18:38:19
>>665
自分で多倍長実数演算すればいいんじゃね?
675デフォルトの名無しさん:2006/04/26(水) 21:06:33
つーか、通貨の演算を整数演算で行うなんて信じられないが。
676デフォルトの名無しさん:2006/04/26(水) 22:24:58
まさか、通貨の演算を浮動小数点演算するのか?
677デフォルトの名無しさん:2006/04/26(水) 22:25:06
>>665
早く定年になるといいですね
あ、でも、投稿を読む限りではその前に整理されるかな?
よかったですね。
678デフォルトの名無しさん:2006/04/26(水) 22:48:25
>>671
これで納得せずに、ちゃんと調べたほうがいいよ。

ttp://www.med.osaka-u.ac.jp/pub/cl-comp/saito/cppintro/cppintro11.html
679デフォルトの名無しさん:2006/04/27(木) 00:40:44
つーか、参照ってC++だけとちゃうし
680デフォルトの名無しさん:2006/04/27(木) 05:48:10
なんでポインタがそんな嫌われるのかわからん
681デフォルトの名無しさん:2006/04/27(木) 07:02:39
参照の実装が必ずポインタになるとは限らない

将来連想記憶へのアクセスが1サイクルで出来るようになれば
今のように変数名をコンパイルして特定のアドレス値として解消するのではなく
変数名そのままが扱えるようになるかもしれない。

そうなれば、参照渡しもアドレスではなく 変数名を渡すようになるだろう
682デフォルトの名無しさん:2006/04/27(木) 07:41:23
>>680
きちんと使えない馬鹿が多いから敬遠されている。
683デフォルトの名無しさん:2006/04/27(木) 07:58:54
>>676
浮動小数点で何が困るわけ?
え? 0.1? 0.1を使うなら最初から10倍しておけよ
684デフォルトの名無しさん:2006/04/27(木) 08:28:29
俺はポインタがないJAVAとか使いたくないけどな。データは殆ど構造体か
クラスに格納し、そのポインタをlistとかvectorの要素にして、楽してる。
メモリマップもイメージしやすいし。
685デフォルトの名無しさん:2006/04/27(木) 09:06:56
>>681
そんな使い勝手の悪いメモリーマップ嫌だ。
686デフォルトの名無しさん:2006/04/27(木) 10:54:59
>>683
全ビットフルに使わず、演算速度も劣る形式を選択するわけですか。
687デフォルトの名無しさん:2006/04/27(木) 11:07:33
通貨は1円未満は切捨てが基本だろうに、四捨五入されて切り上げにでもなったら
使えないジャン
688デフォルトの名無しさん:2006/04/27(木) 13:08:02
なんで文字列形を使わないの?
689デフォルトの名無しさん:2006/04/27(木) 14:24:09
>>688 は普段「もじれつけい」と読んでいるらしい事は判った。
690デフォルトの名無しさん:2006/04/27(木) 15:05:49
>>684
そういう使い方ならJavaも同じというか、Javaはそれしかできない。
Javaの変数ってC++で言うところのshared_ptrだから、
ArrayListやVectorの要素は常にポインタ。
691デフォルトの名無しさん:2006/04/27(木) 17:25:19
>>678
これのさ
>「見るだけや から貸せ。」と言われてもその保証が無い場合、全面的に信用できないのと同 じです。
とか書いてるけどさ、

C++のプログラミングって、なんか外から編集できないなんかとか、
オブジェクトに対するアクセス権をやたら制限したりするけど、

あれって、自分の作るプログラムで、自分が分かって作ってんのに、なんで制限とかしなくちゃいけないの?
見るだけだったら見るだけって分かってるんじゃないの?

なんか意味が有るのかさっぱりわからん。
692デフォルトの名無しさん:2006/04/27(木) 17:32:40
>>691
お前はカプセル化から勉強しなおせ
693デフォルトの名無しさん:2006/04/27(木) 18:00:13
>>691
一人で短時間で作ってるのなら必要ない機能だね。
複数でやってる時や、将来の自分の為、というか酷い事になった事が常であった経験から作られた機能。

もっとも、触りたくなったら好きなようにソース弄られる状態だと意味ないわけだけどね
694デフォルトの名無しさん:2006/04/27(木) 19:37:42
>>691 を読んで、>>678 のリンク先を見てみた。
…ぅゎぁ。
そこ、参考にしない方がいい。

| 参照型変数を使うメリットを考えてみましょう。結論から言いますと
|
|  * オブジェクトのコピーをとることなく、オブジェクトの実体を関数に渡せる。
|  * const修飾子を付けることで、カプセル化をより強力にできる。
|
| の二点に尽きます。
ポインタでも同じ。

| オブジェクトのポインタが渡されてしまうと関数の内部で自由にオブジェクトにアクセスできますから
| 関数内での Read Onlyを保証することができません。
大嘘。
void func(const A* ra);
とすると、func 内で ra が指すインスタンスは変更できない。

| (教訓) 「参照型変数は仮引数の宣言でconstと共に用いるべし。」
参照の使いどころは関数の引数に限らないし、const である必要もない。

| ローカルでないオブジェクト(静的領域にあるオブジェクト)は、関数が終了しても消滅しないので
| その参照を関数が返すことが可能になります。
| こういった、オブジェクトを関数内で生成するには、後述の newキーワードを使います。
一体、どういう理解をしているのかが理解不能。
695デフォルトの名無しさん:2006/04/27(木) 20:00:54
>| こういった、オブジェクトを関数内で生成するには、後述の newキーワードを使います。
更に言えば、「こういった」が掛かるのは何か判らなくなっている。
オブジェクトを指したいのであればそこに読点を挟んではいけない。
こういった文章を書く輩は大抵、物事をきちんと理解しないまま語る傾向がある。
まさしくその典型のようで、他のページにも同様の誤解があるようだ。
696デフォルトの名無しさん:2006/04/28(金) 03:33:12
正直たたくほどの価値があるページとも思えん
>>678の意図がわからん
697デフォルトの名無しさん:2006/04/28(金) 23:30:50
Effective C++すら理解してなさそうだ
698デフォルトの名無しさん:2006/04/29(土) 19:44:58
うむ
699デフォルトの名無しさん:2006/05/01(月) 03:36:05
も〜っと!Effective C♯
700デフォルトの名無しさん:2006/05/01(月) 08:31:43
何かこのサイト面白い・・・C/C++ユーザには宗教信者はいないと
信じていたのだが。
ttp://mag.autumn.org/Content.modf?id=20050426135941
701デフォルトの名無しさん:2006/05/01(月) 13:10:49
宗教信者は多いだろ。
例えばアメリカ人C/C++ユーザの多くはキリスト教徒かマホメット教徒だ。
702デフォルトの名無しさん:2006/05/01(月) 13:18:13
C/C++ユーザには宗教信者はいないという宗教への信仰が揺らいだわけだね
703デフォルトの名無しさん:2006/05/01(月) 13:20:55
>>702
その話の持って行き方は明らかにおかしい。
704デフォルトの名無しさん:2006/05/01(月) 13:32:39
C++にはC++こそ最良のオブジェクト指向言語って宗教を信じてるやつがいそうだな
705デフォルトの名無しさん:2006/05/01(月) 20:31:35
>>700
C++信者というより、C#信者が現実に負けて棄教したって感じに取れるけど。
俺、この人のC#本持ってるわ。
706デフォルトの名無しさん:2006/05/01(月) 22:25:41
gotoが駄目だといったん思ったらどんな事があろうが絶対に意地でも決して使わないタイプだな。
707デフォルトの名無しさん:2006/05/02(火) 22:20:04
ポインタのイメージマスコットを作っといて。クマーみたいなかわいい奴。
したら勉強する気になるかも。
708デフォルトの名無しさん:2006/05/03(水) 01:00:13
>>707

(゚∀(  *  )

↑こんなのどうだ? アスタリスクを使ってることでポインタのイメージに合うし、かわいいぞ。
709デフォルトの名無しさん:2006/05/03(水) 10:04:42
見ろ肛門

1 :名無しさん@お腹いっぱい。: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
死ぬな・・・
710デフォルトの名無しさん:2006/05/09(火) 20:18:50
テリーマンなんか、どうだろう。
デコに '*' と入れてなかったっけ?
711デフォルトの名無しさん:2006/05/10(水) 12:55:14
★だろ
712デフォルトの名無しさん:2006/05/10(水) 18:10:03
713デフォルトの名無しさん:2006/05/10(水) 18:33:20
★はザ・ウルトラマン
714デフォルトの名無しさん:2006/05/10(水) 22:21:08
715デフォルトの名無しさん:2006/05/10(水) 23:02:15
★はデコではなく肩だな
716デフォルトの名無しさん:2006/05/11(木) 10:20:13
☆は
つのだ☆ひろ
717デフォルトの名無しさん:2006/05/12(金) 04:42:34
☆は乳首に決まってるだろ
718デフォルトの名無しさん:2006/05/12(金) 19:37:56
実は俺もそう思った
719デフォルトの名無しさん:2006/05/12(金) 22:04:49
★★
≡≡
二等陸佐
720デフォルトの名無しさん:2006/05/12(金) 22:29:15
>>719
無茶しやがって…
721デフォルトの名無しさん:2006/05/13(土) 17:14:49
ポインタより多重継承を殺してくれよ
わけわからん
722デフォルトの名無しさん:2006/05/13(土) 19:14:20
使わなければいいだろ。
723デフォルトの名無しさん:2006/05/13(土) 19:14:52
スーパークラスのサブクラスのサブクラスのサブクラスが
実はインターフェースでつながっていてそのインターフェースうおおおおおお
724デフォルトの名無しさん:2006/05/13(土) 20:39:42
インターフェースだけでもなんとかなったりする。ならなかったりする。
725デフォルトの名無しさん:2006/05/13(土) 21:11:22
C++のような多重継承がある上で、さらにC#/Java/Dのようなインターフェイスもある言語があったらいいと思う。
726デフォルトの名無しさん:2006/05/13(土) 21:48:57
へ、C++ってインターフェイス使えないの?
727デフォルトの名無しさん:2006/05/13(土) 22:30:14
インターフェイスをあらわすのには純粋仮想関数を並べたクラスを使う。
抽象クラスとの区別が付きにくい感じがするのが俺は好きでない。
728SOURCE ◆tAo.kQ2STk :2006/05/14(日) 00:56:43
>>725
自分で作れ。

俺は計算速度を限界まで高められる言語作ってる。
今の所、「活発的ななんとか」っていうソフトから作られる奴の二十数倍はスピード出る。はず。論理上。
729デフォルトの名無しさん:2006/05/14(日) 10:27:10
ActivePerl?ActiveBasic?
730デフォルトの名無しさん:2006/05/15(月) 09:37:40
talk:>>729
PureBasic
731デフォルトの名無しさん:2006/05/15(月) 10:29:14
多重継承は使わない約束にしとかないといろいろ困るだろうな
732デフォルトの名無しさん:2006/05/15(月) 19:58:51
ある程度用途の限定されたライブラリを作るときに、よく考えてから使えば、特に困らない。
733デフォルトの名無しさん:2006/05/17(水) 21:12:53
>>728
下を見たらきりがないからな。
アセンブラの二十数倍ならスゲェと思う。(どうやってやるかは知らんが)
734デフォルトの名無しさん:2006/05/17(水) 21:52:39
アセンブラの二十数倍以上でる言語……。
GPU上で動くシェーダー言語とか?
735デフォルトの名無しさん:2006/05/18(木) 01:33:47
>>733
HDL言語なら可能だお^^
736デフォルトの名無しさん:2006/05/18(木) 05:38:35
動作周波数1GHzのCPUのアセンブラと
動作周波数100MHzのFPGAのHDLとでは
どちらが高速に動作しますか?
737デフォルトの名無しさん:2006/05/18(木) 05:41:22
当然後者
738デフォルトの名無しさん:2006/05/18(木) 05:55:45
動作周波数10MHzのFPGAとかでも高速ですか?
739デフォルトの名無しさん:2006/05/18(木) 09:29:51
アプリケーションの並列度による
740デフォルトの名無しさん:2006/05/21(日) 04:38:34
ポインタさえ理解できないやつは、他のどのプログラミング言語
やろうが、結局挫折する・・・と思う
741デフォルトの名無しさん:2006/05/21(日) 04:46:09
ボインちゃん死ねに見えて、1こそ死ねと思った。
そんな徹夜明けの朝。
742デフォルトの名無しさん:2006/05/21(日) 10:52:02
ひんにうまんせー
743デフォルトの名無しさん:2006/05/21(日) 18:13:20
>>740
Cのポインタは最初は良く分からなかったけど,
Javaで参照渡しとかに慣れてからまたCをやったら理解できるようになったよ.
744デフォルトの名無しさん:2006/05/22(月) 00:24:02
>>740
ポインタ理解出来たくらいで
そこまで言い切っちゃう奴も同様ではないかと。
745デフォルトの名無しさん:2006/05/23(火) 03:27:22
ポインタが変な方向へ動く事がしょっちゅうあるんだけど、これってなんなの?
746デフォルトの名無しさん:2006/05/23(火) 03:30:13
ポインタが勝手に変な方向へ動く事がしょっちゅうあるんだけど、これってなんなの?
747デフォルトの名無しさん:2006/05/23(火) 03:45:43
ポインタが自分勝手に変な方向へ動く事がしょっちゅうあるんだけど、これってなんなの?
748デフォルトの名無しさん:2006/05/23(火) 04:04:54


   日  本  語  で  お  k  。

749デフォルトの名無しさん:2006/05/23(火) 07:14:35
>>745

char *p1;
int *p2;

p1++

p2++
の違いが分かってないとか?
750デフォルトの名無しさん:2006/05/23(火) 08:22:06
>>745
  光学マウスのポインタがぷるぷるする人あつまれ〜!!
  http://pc7.2ch.net/test/read.cgi/pc/1111122069/l50
751デフォルトの名無しさん:2006/05/24(水) 00:01:30
新しいマウス買えよ。。。
752デフォルトの名無しさん:2006/05/24(水) 00:02:56
マウスより、机環境のせいだと思うぞ。
753デフォルトの名無しさん:2006/05/24(水) 00:10:26
http://www.logicool.co.jp/index.cfm/products/details/JP/JA,CRID=2142,CONTENTID=7982
これ使え
鏡の上でもポインタがぶれないから
754デフォルトの名無しさん:2006/05/24(水) 05:17:01
ツルツルじゃない白紙が一番良い
755デフォルトの名無しさん:2006/05/31(水) 17:12:35
タッチパッドだたりして
756デフォルトの名無しさん:2006/06/01(木) 05:39:11
ポインタ変数などの宣言/定義についてわかりやすい考え方。

Cの宣言ていうのは、基本的に、

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に書いてあるよな。
757デフォルトの名無しさん:2006/06/01(木) 07:01:20
ボンズも756超えるのかな
758デフォルトの名無しさん:2006/06/01(木) 16:11:05
756がわかりやすいって思った人、いる?
759デフォルトの名無しさん:2006/06/01(木) 22:09:37
やっぱりメジャーで偉大なのは
ハンク・アーロンだよね

王なんて向こうでは参考記録程度の扱い
760デフォルトの名無しさん:2006/06/02(金) 09:58:05
>758
一見して読む気が失せる
761デフォルトの名無しさん:2006/06/03(土) 22:50:14
int型のポインタっていう言い方が間違っていて、
int型へのポインタっていう言い方が正しい理由が分かりますえん。
762デフォルトの名無しさん:2006/06/04(日) 03:47:50
>>761
イント型のポインタ void *Ptr; int iPtr = reinterpret_cast<int>(Ptr); つまり、int型に詰め込んだポインタ
イント型へのポインタ int i; void *Ptr = reinterpret_cast<void*>(&i); つまり、int型のなにがしを指してるポインタ

って事じゃねえか? 前者はint型とアドレス空間が同一サイズの環境でしかムリな書き方だけどなw
763デフォルトの名無しさん:2006/06/06(火) 08:11:21
インド型のボインだよ?
764デフォルトの名無しさん:2006/06/06(火) 08:20:47
char const *a;

const char *a;

の区別がよくわかりません。

どう違うのかはよくわかっているのですが、

いつもどっちがどっちだっけ?と悩みます。

分かりやすい覚え方ないでしょうか?
765デフォルトの名無しさん:2006/06/06(火) 08:42:45
>>764
>どう違うのかはよくわかっているのですが、
その2つはどう見ても同じだし、よくわかってない。

* の右にあれば、a (ポインタ) が書き換え不可。
  char * const a;
* の左にあれば、*a (ポインタが指す中身) が書き換え不可。
  const char *a;
  char const *a;
つか、「変数名から外に向かって読む」って原則通りなんだが。
766デフォルトの名無しさん:2006/06/06(火) 10:05:38

どう見ても同じものです。

本当にありがとうございました。
767デフォルトの名無しさん:2006/06/26(月) 23:31:42
全然別だと思うんだが・・・
768デフォルトの名無しさん:2006/06/27(火) 00:35:11
>>767
何が別なんだ?
#まさかとは思うが、char const * aとconst char * aが別だなんて言わないよな。
769デフォルトの名無しさん:2006/06/27(火) 10:15:16
それは同じ
すまんケータイからで流れ読めてなかった
770デフォルトの名無しさん:2006/06/27(火) 22:11:34
このスレを見ているとわかっていたはずのものがわからなくなっていく気がする
771デフォルトの名無しさん:2006/06/30(金) 00:54:01
感覚的に使ってるっぽいので俺には理解不可だわ
772デフォルトの名無しさん:2006/07/18(火) 00:41:17
携帯から>>400>>500に飛びたいので書き込ませてもらいます。
773デフォルトの名無しさん:2006/07/18(火) 12:32:31
携帯死ね
774デフォルトの名無しさん:2006/07/18(火) 17:50:57
正直、いまだに

typedef BOOL (*unko)(viod)

になじめない
775デフォルトの名無しさん:2006/07/18(火) 18:06:31
なじまなくていいよそんなクソコード
776デフォルトの名無しさん:2006/07/19(水) 02:52:21
ポインタと参照を同時に使われるとわけわかんなくならない?
ポインタのポインタのほうが判りやすいと思うのだが。
777デフォルトの名無しさん:2006/07/19(水) 03:14:18
777
778デフォルトの名無しさん:2006/07/23(日) 12:57:11
>>774
確かにviodにはなじめないな
779デフォルトの名無しさん:2006/07/23(日) 22:12:49
>778
test
780デフォルトの名無しさん:2006/07/23(日) 22:14:09
>>778
test
781デフォルトの名無しさん:2006/07/23(日) 22:55:17
>>778 の人気に嫉…いや人気があるわけじゃないのか。
782デフォルトの名無しさん:2006/07/24(月) 20:19:37
>>778
typedefしてるかも知れないじゃないか。
783デフォルトの名無しさん:2006/07/24(月) 20:41:13
>>774
なんで関数ポインタがBOOLになるんですか?
784デフォルトの名無しさん:2006/07/24(月) 22:48:51
>>783
それは、BOOL型を返す、viod型を引き数に持つ関数ポインタをunkoとtypedefしているのだ。

>>782
馴染めないだろ。
785デフォルトの名無しさん:2006/07/25(火) 02:35:09
#include <stdio.h>

BOOL implemented_unko(void)
{
  return 783 == unko;
}

int main(void)
{
  unko f;

f = implemented_unko;
fprintf(stdout, "%d", f());

  return 0;
}
786デフォルトの名無しさん:2006/07/25(火) 03:13:05
「関数ポインタっすかw」
「オブジェクトごと渡してメンバ関数呼んだほうが良くありませんかw」
787デフォルトの名無しさん:2006/07/26(水) 21:32:43
俺にプログラミングの演習でそこらじゅうが分からないと聞いてきた奴が居た。(つまり俺に答えを教えてくれと言ってる様な物だ)
面倒起こすとうざいから、「この関数に a, b, c という引数を入れるんですよ(b は変数のポインタを入れる)」と教えてやった。
そいつは関数の定義を無視して b, c, a を入れてエラーが出るとか抜かしてきた(当然エラーと警告の違いも分かっていない)。
「定義に従って順番どおりに入れて下さいね(^^;」。またエラーが出るとか抜かしてきやがった(警告だって!!!!)。
「定義ちゃんと見てますか?(^^; ポインタを渡すんだから & 付けなければいけないんですよ?」
DQN「へー、じゃあこの * とかは付けなくていいの?」 <- 教科書を読んでない事を確信させる一言
そんなんで後期の数値解析とか出られると困るから教科書嫁、出来ないんだったら光の速さで氏ね!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
788デフォルトの名無しさん:2006/07/26(水) 22:33:37
C++で超頑張るとポインタを使う機会はかなり減らせる
そのかわりテンプレート絡みでコンパイルエラーになると
コンパイラのメッセージがニャントロ星人の言語みたいになる諸刃の剣
789デフォルトの名無しさん:2006/07/26(水) 22:34:52
ニャントロ星人
790デフォルトの名無しさん:2006/07/26(水) 22:43:00
変数がデータの入れ物ってだけでも面倒なのに
さらにその変数を入れる入れ物があるなんて!
ポインタを作った人はマゾか基地外です。
791デフォルトの名無しさん:2006/07/26(水) 22:57:38
>>790
あんたの頭はキャベツか。
792デフォルトの名無しさん:2006/07/26(水) 23:53:14
キャベツに失礼だろ
793デフォルトの名無しさん:2006/07/26(水) 23:57:01
なんだと!
794デフォルトの名無しさん:2006/07/27(木) 07:08:26
漏れは現役じゃないけど宿題とか課題出たら
友達に配布するバージョンと自分の提出用バージョンの
二つを作ってたな
795デフォルトの名無しさん:2006/07/27(木) 18:07:02
>>786
二行目の台詞に激しく同意!!!
「オブジェクトごと渡してメンバ関数呼」んだ方が
ずぅぅっと便利でわかりやすいし、色んなことが出来ると思う!!
796デフォルトの名無しさん:2006/07/27(木) 18:25:57
>>794
俺、オレオレポインタ。
君の勉強熱心なところに惚れた。
君のためなら死んでもいい。
797デフォルトの名無しさん:2006/07/28(金) 02:13:51
つか、ポインタのどこが難しいのか俺には分からん。。。
798デフォルトの名無しさん:2006/07/28(金) 02:20:54
「どうやら大部分の人々はポインタを理解するための脳の一部分を持たずして生まれてくる」
という話はホントかも知れない。
799デフォルトの名無しさん:2006/07/28(金) 02:21:31
800デフォルトの名無しさん:2006/07/28(金) 07:38:56
ポインタの仕組みは理解したはいいが、
何に使うのか分からん
配列以外の使い道の例教えてくれ
801デフォルトの名無しさん:2006/07/28(金) 07:44:25
使い道が判らん様では真に理解したとは言えないだろうよ。
802デフォルトの名無しさん:2006/07/28(金) 08:41:31
802
803デフォルトの名無しさん:2006/07/28(金) 10:13:15
>>800
リストやツリー等のデータ構造の表現・実装。
804デフォルトの名無しさん:2006/07/28(金) 10:37:15
>>800
関数のポインタ
ファイルポインタ
ポリモフィズム
805デフォルトの名無しさん:2006/07/28(金) 10:44:09
>>804
>ファイルポインタ
こりゃカプセル化の実例だべ。
806デフォルトの名無しさん:2006/07/28(金) 10:52:38
なんか問題ありますか?
807デフォルトの名無しさん:2006/07/28(金) 10:54:03
qsort

配列自身と各要素へのポインタと比較関数ポインタの部分と
縦横無尽に使ってる
808デフォルトの名無しさん:2006/07/28(金) 12:25:15
八百屋
809デフォルトの名無しさん:2006/07/28(金) 14:44:29
>>808
ポインタを置いてる八百屋はまずないと思いますが。
810デフォルトの名無しさん:2006/07/28(金) 14:58:21
>>809

ヒント:レス番
811デフォルトの名無しさん:2006/07/28(金) 16:54:42
タイムセール
新鮮ポインタ、一山100円
812デフォルトの名無しさん:2006/07/28(金) 18:23:59
姉さん、元気ですか?
心配かけてごめんなさい。僕は相変わらずポインタの仕事をしています。
いろんなものを指し示したり、死ね。って言われたり、がっされたり大変です。
姉さんは参照の仕事でしたね。がっされることがないのはうらやましいです。
いつか僕も参照の仕事につきたいけど、不況だし、姉さんみたいにエリートじゃ
ないからちょっと無理かな。

父さんは定年後スマートポインタやるぞーとか言ってたけどその後どうですか?
その後おとなしくしていますか? またやるって言い出したら止めてあげてください。


813デフォルトの名無しさん:2006/07/28(金) 22:20:15
ポインタ無くなったらぬるぽの存在価値が
814デフォルトの名無しさん:2006/07/28(金) 23:11:27
ポインタ = アドレス

それ以外の何があるんだろう。。。
815デフォルトの名無しさん:2006/07/28(金) 23:31:12
そうでない実装も作ろうと思えば作れる。
816デフォルトの名無しさん:2006/07/29(土) 00:06:11
>>815
いや、勘弁してw
もう万能ポインタとか要らんから・・・
817デフォルトの名無しさん:2006/07/29(土) 05:43:48
>>814
それはわかるのだが、
データを扱うのになぜわざわざアドレスという
間接的な概念をかますのか、ということだな。
ポインタのない言語があるのだから、ポインタのある言語が
設計者の努力不足と叩かれるのは仕方あるまい。
818デフォルトの名無しさん:2006/07/29(土) 06:24:36
ポインタのない言語は制約が多すぎる。
819デフォルトの名無しさん:2006/07/29(土) 06:48:58

>データを扱うのになぜわざわざアドレスという
>間接的な概念をかますのか、ということだな。

ここは同意出来るが何を言い出すのかと思えば

>ポインタのない言語があるのだから、ポインタのある言語が
>設計者の努力不足と叩かれるのは仕方あるまい。

ただの阿呆だったか。
820819:2006/07/29(土) 08:06:35
ゴルフをするときは色々な種類のクラブを持っていたほうが有利な場合もある、ということです(^^)
821デフォルトの名無しさん:2006/07/29(土) 08:27:44
>>814
・アドレス(ワード単位) + バイト位置
・セグメントアドレス + オフセットアドレス
幾らでもあるだろうに。
822デフォルトの名無しさん:2006/07/29(土) 08:42:42
アフォ毛
823デフォルトの名無しさん:2006/07/30(日) 01:41:59
ポインタ使えないやつってどうやって関数組んでるのかすごく気になる
824デフォルトの名無しさん:2006/07/30(日) 01:53:26
いや別に、ポインタを使わない関数なんていくらでもあるわけだが。
825デフォルトの名無しさん:2006/07/30(日) 02:04:08
プログラム範囲が滅茶苦茶狭くなるがな。
826デフォルトの名無しさん:2006/07/30(日) 02:10:40
全部インスタンスで扱うから、コンストラクト/ですとらくとのオーバーヒートがすごいな。
827デフォルトの名無しさん:2006/07/30(日) 02:31:12
どっかに参照も使わないって書いてある?
828デフォルトの名無しさん:2006/07/30(日) 02:44:34
あっ!
そ・・・そうか!ポインタを使わなくても、参照は使えるんだ!
それなら・・・なんとかできるかもしれない・・・!
829デフォルトの名無しさん:2006/07/30(日) 03:39:19
グローバル使いまくってるかと思うとぞっとする
830デフォルトの名無しさん:2006/07/30(日) 07:53:18
>>826
>オーバーヒートがすごいな。
831デフォルトの名無しさん:2006/07/30(日) 08:58:10
やっとつっこんでくれた\(^○^)/
832デフォルトの名無しさん:2006/07/30(日) 20:03:12
\(^○^)/ ヤッター!
833デフォルトの名無しさん:2006/07/31(月) 17:28:58
*\(^○^)/ ヤッター!
834デフォルトの名無しさん:2006/08/01(火) 14:35:41
return (*(void (*)(int, void (*)(int)))(int)signal)(SIGINT, SIG_IGN);
ガンガンいこうぜ
835デフォルトの名無しさん:2006/08/01(火) 23:50:32
>>834
こういうソース考えたやつは馬鹿じゃねーの
836デフォルトの名無しさん:2006/08/01(火) 23:56:30
関数へのポインタを返す関数のポインタ
837デフォルトの名無しさん:2006/08/02(水) 00:25:09
>>834はひっかけだろ。エラーになる。

#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;
}
838デフォルトの名無しさん:2006/08/02(水) 00:31:38
>>835
void ( * signal(int SIG, void(*FUNC)(int)) )(int);
これでも標準関数なんだけどねぇ。
839デフォルトの名無しさん:2006/08/02(水) 00:59:30
>>838
あ、こういう関数があると知ってから>>834を見ればわかるわ。
だけどいきなり文中に出てこられたらわからん・・・。
840デフォルトの名無しさん:2006/08/02(水) 08:43:47
必要なデータは予め配列として全部確保しといて、
ポインタではなく、その配列のインデックスを
受け渡すようなプログラムばっかりだ。
うちの会社。
841デフォルトの名無しさん:2006/08/02(水) 08:48:04
場合にもよるが、かいつまんで言うと低レベルってことか
842デフォルトの名無しさん:2006/08/02(水) 09:05:47
ポインタを使わなくてもなんら問題ないしな
無理して使わなくても良し
843837:2006/08/02(水) 09:31:34
一見複雑そうなポインタも簡単に分解する方法があるんだけどね。
方法が分かれば>>834の間違いもみんなすぐ気づくよ。
844デフォルトの名無しさん:2006/08/02(水) 10:58:01
例えばttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/signal.2.htmlでは
同じ関数が
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t sighandler);
こう書かれていて少しは判りやすい。
845デフォルトの名無しさん:2006/08/04(金) 01:22:03
アドレス→住所に例えて説明される→間接的な概念
ってことか!
いや、すぐにわからなくて、ちょっと気になってた。
846デフォルトの名無しさん:2006/08/04(金) 01:54:06
ポインタを使用する、ちょっと込み入ったプログラムを作るとき
いくつかの箱と、その間を結ぶ矢印でできた図をチラシの裏に書かずに
いきなりコードを書きはじめるやつがいる。
たぶん、余程の天才か余程のアホのどちらかだ。
847デフォルトの名無しさん:2006/08/04(金) 02:00:32
普通じゃん。それともあんたは「餓鬼の頃は紙に書かないとできなかったようなこと」を
今でも紙に書かないとできないのか?
848デフォルトの名無しさん:2006/08/04(金) 02:08:07
込み入ったプログラムで、複数の人とやりとりする場合、コードのみでどうこうしないで
まず参考になるイメージや図を作ってから取り込むのは常識だよ。
そういうのが無しでもやれるって言う自分がすげーって思われたいなら論外。
大きい場所を知らない小さい会社か?
849デフォルトの名無しさん:2006/08/04(金) 02:24:15
848は正論だと俺は思うが、たかがポインタ如きで図を描く必要は無いだろ。
850デフォルトの名無しさん:2006/08/04(金) 02:44:00
っつーかポインタ生きろ、絶対に死ぬな。嫌う奴なんかに負けるな。
いや、嫌う奴は使わなきゃ良いだけだ。
851デフォルトの名無しさん:2006/08/04(金) 02:49:01
「ちょっと込み入った」の基準が人によって違うってことだろうな
852デフォルトの名無しさん:2006/08/04(金) 02:59:48
俺もリファレンスだけで生きてゆきたい。
853デフォルトの名無しさん:2006/08/04(金) 03:23:51
おやおや、>846にはなかった条件が>848でわらわらと増えてきましたな。
それとも「ちょっと込み入ったプログラム」とは「複数の人とやりとりするような規模のプログラム」だと言いたいのか?
854デフォルトの名無しさん:2006/08/04(金) 04:54:30
ポインタの52%は見栄で出来ています
ポインタの34%は野望で出来ています
ポインタの7%はマイナスイオンで出来ています
ポインタの4%はお菓子で出来ています
ポインタの3%は言葉で出来ています
855デフォルトの名無しさん:2006/08/04(金) 11:17:48
>>853
「込み入ったプログラム」は絵に描かないと判らない、というレベルの人が
「複数の人」の中にいるんだろう。
856デフォルトの名無しさん:2006/08/04(金) 11:58:04
上手いことを言う。
857デフォルトの名無しさん:2006/08/04(金) 20:51:18
自分一人で作るプロジェクトだったら別に良いけど
ポインタに限らず、まずは紙に流れを書いてやる方が
ミスがあったときも気づきやすいけどな
まぁ、ポインタだけに焦点を置くなら、別に紙に書かなくても良いがw
858デフォルトの名無しさん:2006/08/04(金) 22:06:46
そもそもなんで紙なんか持ち出す必要があるんだ?
目の前には広大なキャンパスがあるというのに。
859デフォルトの名無しさん:2006/08/04(金) 23:23:16
別に”紙”が重要なんじゃない、あくまでもプロセスのイメージを
分かりやすく記述すると良いってことでしょ
あまり人のやり方にいちいちケチをつけない
860デフォルトの名無しさん:2006/08/04(金) 23:27:28
大体の流れ(ライブラリやエンジン単位)は紙に書くけど
ポインタがどうのなんて紙に書いてる時間がもったいない
何のための開発環境だよ
861デフォルトの名無しさん:2006/08/04(金) 23:42:56
アスタの3連が当たり前に使われてたコードは
図解で説明されても理解できなかった。freeするの命がけ

スパゲティ書ける人尊敬するぜ
862デフォルトの名無しさん:2006/08/04(金) 23:54:44
アスタの3連は流石にもう見かけないなあ。
リストなり配列なりは、テンプレートの中に隠蔽するだろうし。
STLとboost::arrayができてから、ポインタの出番は激減したす。
863デフォルトの名無しさん:2006/08/05(土) 00:44:11
>>862
ようするにC言語死ねってこと?
864デフォルトの名無しさん:2006/08/05(土) 01:02:05
実際C言語でなければならない状況ってほとんどなくね?
C++のコンパイラが安定しなかったり準備されてなかったり性能が劣っていたりしたのも、
いまは昔の話なんだし。

宗教上の理由で使ってない現場も見かけないじゃないけど、組み込みですら
C++使ってて困ることってない。
C99とかはプロ仕様だなーとは思うけど、ランタイムに影響与える様な変更はほとんどないし、
C++が普通に使える環境では存在意義が疑わしい気すらする。
過去の資産の関係で移行を見送ってる場合もあるんだろうけど…

ポインタが万能すぎる必要以上に強力な概念なことは自明だし、使う必要のないところでまで使うことはない。
でもってC++だと、参照とコンテナ類のテンプレート化だけででも、ポインタの出番は大分減らせられる。
もちろんこの程度の範囲で済む変更なら、生成されるバイナリの質は変わりゃしないし…

とか思うんだけど、どうさ。
865デフォルトの名無しさん:2006/08/05(土) 05:53:12
>>864
概ね同意。C指定のプロジェクトでポインタを極力意識させないような関数作ってて
ふと気づくと劣化版クラス特化コンテナになっていることに気づくときがままある。
866デフォルトの名無しさん:2006/08/05(土) 10:19:50
C++を便利なCとして使うなら、「C++使う意味無くね?」って意見もあるだろうな。
867デフォルトの名無しさん:2006/08/05(土) 10:58:26
Cを便利なアセンブラとして使うなら、「C使う意味無くね?」って意見もあるだろうな。
868デフォルトの名無しさん:2006/08/05(土) 11:03:40
>>866
「便利」なら使う意味があるだろう。
869デフォルトの名無しさん:2006/08/05(土) 11:36:13
ちょっと便利ってだけでCとの互換性捨てる必要があるかという判断基準もあるってこった。
870デフォルトの名無しさん:2006/08/05(土) 12:53:20
そもそもCとC++はリンクできるし、ほんのちょっと修正すればCもC++として
コンパイルできるからいいんじゃね?
871デフォルトの名無しさん:2006/08/05(土) 13:00:50
そういうのもあるって話なんで、お前の判断はこの際どうでもいいんだよ
872デフォルトの名無しさん:2006/08/05(土) 13:48:02
「C++が普通に使える環境」じゃないことはいっぱいある。
たとえば組み込み系はARMやSHばかりじゃないんだよ。
873デフォルトの名無しさん:2006/08/05(土) 14:13:18
>>872
そうなんだろうけど、話にしか(もっと言うと風の噂にしか)聞かないんだよな。
単に業界の違いなんだろうけど。

具体的にどんな環境がそうなん?
874デフォルトの名無しさん:2006/08/05(土) 15:24:28
>>873
ハンディターミナルで、WinCE載っけてないヤツとか。
ヘタすりゃBASICのみ。(QRコードを開発した某社とか)
有名どころのプロセッサ使ってても、専用ライブラリが
抱き合わせの開発環境 (C しかない) でしか使えなかったり。
875デフォルトの名無しさん:2006/08/05(土) 16:06:58
話ぶったぎるようで申し訳ないが言わせてくれ

自宅で飼ってる kernel が ABI失調症で危篤。
恐るべしG++言語
876デフォルトの名無しさん:2006/08/05(土) 20:12:24
G++ !?!
877デフォルトの名無しさん:2006/08/05(土) 20:16:50
ゴキブリが出てかみさんが食欲なくして夏痩せでオパーイ縮んじゃった??
878デフォルトの名無しさん:2006/08/05(土) 22:19:13
gpp?
879デフォルトの名無しさん:2006/08/11(金) 19:46:57
それにしてもこのスレのタイトルからは熱く激しいパッションが伝わってくるよな…
880デフォルトの名無しさん:2006/08/11(金) 19:50:13
デンデレッデレレ デンデテレッデレレ
881デフォルトの名無しさん:2006/08/11(金) 20:43:45
ヘェーラロロォールノォーノナーァオオォー
882デフォルトの名無しさん:2006/08/11(金) 21:44:41
>>879

そりゃそうだよ。ポインタを扱ってるんだもん〜〜〜ん〜〜〜ん〜〜〜(←左胸を叩きながら読むこと)
883デフォルトの名無しさん:2006/08/11(金) 22:46:00
そりゃそうだよ。ポインタを扱ってるんだもん〜〜〜ん〜〜〜ん〜〜〜(←左胸を叩きながら読むこと)
884デフォルトの名無しさん:2006/08/12(土) 00:49:42
左の胸を叩かれたら右の胸を揉ませろと言いましてですな。
885デフォルトの名無しさん:2006/08/12(土) 02:21:29
知ってる知ってる!
それ油ハム法典とかいうやつでしょ?
上の口をふさがれたら下の口を差し出すとかいうやつ
886デフォルトの名無しさん:2006/08/23(水) 06:19:17
俺もポインタは嫌いだけど、

ポインタを使わないと世界中に溢れている良質のコードの再利用が
出来ない。ひとりでやっていると死ぬほど時間がかかる。

ポインタが嫌いとか好き嫌い言ってると体の調子を崩すよ。
健康にいいんだから、食べなきゃ。エネルギーに変えなきゃ。

せっかくメモリのアドレスを覚えてくれる便利な変数があるのに使わないとね。
ポインタにも型があったりして、キャストしたりして型変換できるよね。
ポインタに型がなかったら、そのポインタがさしている入れ物の大きさがどれくらいの大きさなのか
わからなくなっちゃうよ。配列の場合、次の要素がどこの番地か分からなくなる。
ポインタにも型があるから、複雑に感じるのかな。いや、ポインタのポインタとかも何でもありだから複雑なのかもしれないね。
でもCOMっていう便利なインターフェースを使うと、そのポインタのポインタっていう考え方が必要になったりするんだ。

俺もポインタは嫌いだけど、
食べるよ。エネルギーに変える。最後はうんこになる。そう、うんこ。俺のうんこ。

ポインタはうんこ。
887デフォルトの名無しさん:2006/08/23(水) 08:19:43
>>886
生のインターフェースをを扱わなければ、COMでもポインタへのポインタは特に必要ではないぞ。
VC++なら#importとかね。
888デフォルトの名無しさん:2006/08/23(水) 09:55:53
>>886
>俺もポインタは嫌いだけど、
>俺もポインタは嫌いだけど、
二回言うほど苦手なのは判った。
889デフォルトの名無しさん:2006/08/23(水) 10:00:47
>886
なんかのコピペ?
890デフォルトの名無しさん:2006/08/23(水) 22:47:45
私は、レーザーポインタを使うのがへたくそなんです。
いつもいつも、違うところばかりさしてしまいます。

こんな私に、ポインタの使い方を教えてください。
891デフォルトの名無しさん:2006/08/24(木) 00:03:30
レーザーポインタをプレゼンで使うのは間違っていると思うんだ。
普通に指示棒で指した方が、発表者も使いやすいし観客も見やすいハズ。
892デフォルトの名無しさん:2006/08/24(木) 05:56:39
クラス変数が実体化されたときのアドレス格納の役割をするポインタはさらに難易度が増します。
クラスの中にあるメンバ関数を呼び出す事だって出来るのが最強なのです。

アロー演算子? ->

こいつが最強なんです。

どたまの悪い俺から言わせて貰えば、クラスを格納したポインタ変数でもない、そんな普通のクラス変数に
アロー演算子を使ってみたりするドジとか余裕でやっちゃいます。
おまけに、関数の引数で参照渡しの使いどころを間違えてみたり、ありえない引数とかを余裕で設定するんです。
ポインタが俺に及ぼす影響は計り知れない。ポインタのゴミの消し忘れとか日常茶飯事。
Windowsベースのプログラミングをしてるとコードが長くなりすぎて、
自分が今、ここで何の機能をプログラミングしなければいけないのかさえ、わからなくなるんです。
そんなときにもポインタが、俺の前に立ちはだかる。

なんつうの、いわゆる混乱?

そんなんだから、他人の書いたコードとか理解するのに相当な月日が流れる。
もうそんなこんなで30になりそうです。え、もっと勉強しろ。任天堂DS買え?

そうなんです。そういう次元なんです。
本業じゃなくて、よかったです。
893デフォルトの名無しさん:2006/08/24(木) 09:12:57
本業だろうが趣味だろうが,プログラミングはやめたほうがいいと思う
894デフォルトの名無しさん:2006/08/25(金) 00:41:14
>>892
単に設計方法や構造の組み方がおかしいだけかと
895デフォルトの名無しさん:2006/08/25(金) 00:47:53
>>892
才能ないよ。やめれば?
896デフォルトの名無しさん:2006/08/25(金) 01:11:22
まあCのプログラミングの8割はメモリ操作なわけで
こんなコンピュータ内部の動作のために人間様の貴重な
時間と脳力使ってられるかってところが現場の本音なわけで
特に今のJavaやスクリプト言語のようなポインタのない高級な
言語の蜜の味を知ってしまった人達は心からそう思うわけで
だからポインタなぞわからなくとも恥ずかしくもなんともないわけで
つまるところポインタ氏ね。
897デフォルトの名無しさん:2006/08/25(金) 01:18:51
>>896
そのスクリプト言語やらの土台は誰がどう作ってるのか考えてるのかよ?
898デフォルトの名無しさん:2006/08/25(金) 01:19:27
>>896
日本語でどうぞ。
899デフォルトの名無しさん:2006/08/25(金) 03:23:12
ポインタが一体、実際に何をさしているのか、それがわかれば簡単ですが、
それが直感的にわかるまでが大変です。

そして
変数の前にくる、このお尻の穴のようなもの「*」がポインタ変数に付くと、
そのポインタの中身を示すようになるのが、なんともやらしいことでありまして、
さすがはお尻の穴だなぁと感慨深く思います。

この、*がお尻の穴のようなものに見えてくると、もうプログラミング所ではなくなり、
皆さんのご想像する結果となってしまうわけです。

しかし、
大事なのは、この、お尻の穴の代わりに、このような&雪だるまさんを変数につけると、
通常の変数でさえもポインタの役割にちかいことをやってくるます。

はい。みなさん勉強になりましたね。
それでは、普及がてらみなさんごいっしょに。せーの。


「雪だるまにお尻の穴は絶対必要!」
900デフォルトの名無しさん:2006/08/25(金) 03:27:30
ごめんなさい。
901デフォルトの名無しさん:2006/08/25(金) 03:36:03
レス番の一桁目が0の奴は死ね。
902デフォルトの名無しさん:2006/08/25(金) 04:58:29
間接キッスが好きな奴のやることがポインタ。

あ、うまいこと言ってもうたやん・・・
903デフォルトの名無しさん:2006/08/25(金) 07:26:37
ポインタには泣かせられるぜ。
904デフォルトの名無しさん:2006/08/25(金) 07:37:19
出したり入れたりして犯してやったぜ

#include <stdio.h>
int main(){
char *p="pointer";
puts(*&*&*&*&*&*&*&*&*&*&*&*&*&*&p);
return 0;
}
905デフォルトの名無しさん:2006/08/25(金) 08:02:44
>>896
Javaにポインタが無いとはなんのご冗談のおつもりで?
906デフォルトの名無しさん:2006/08/25(金) 09:27:13
ぬるぽ
907デフォルトの名無しさん:2006/08/25(金) 09:41:08
ガッ

・・・はjavaにもあるんだな。
つまりポインタは本当に存在したんだ!!
なんだってー (AA略
908デフォルトの名無しさん:2006/08/25(金) 10:13:30
>>905-906
「ぬるぽ」誕生の瞬間を再現してるな。
909デフォルトの名無しさん:2006/08/25(金) 23:28:05
何気に>>886->>904を読めば、ポインタのことが勉強できるようになっているのが、
ここ最近のポインタじゃなくてポイントですね!
910デフォルトの名無しさん:2006/08/25(金) 23:31:15
でも、こんな調子の参考書なら間違いなく、買わないな。
911伊藤:2006/08/26(土) 08:37:17
死ねばいいのに
912デフォルトの名無しさん:2006/08/26(土) 09:59:14
ポインタがあって射精する程感謝した事は?
913デフォルトの名無しさん:2006/08/26(土) 12:23:32
グローバル変数を極力抑えられる
914デフォルトの名無しさん:2006/08/26(土) 12:35:35
引数渡して戻り値じゃダメのか?
ポインタの必要性が今ひとつ分からん
915デフォルトの名無しさん:2006/08/26(土) 13:27:06
>>914
戻り値で返せるような変数の個数だったら良いよ
配列や構造体はどうするよ?
916デフォルトの名無しさん:2006/08/26(土) 15:23:02
戻り値は一つだけだしね。
でもなぜポインタを使わなければいかないかって説明するのめんどくさいよ。
外部変数と自動変数の挙動とか値渡しの意味とか、その辺理解してないと
scanf("%d", &i);
の&がなぜ必要か理解できないからねぇ。
917デフォルトの名無しさん:2006/08/26(土) 15:43:51
あとは、値をそのまま渡すと渡した方で変数確保するから
ポインタつかった時と比べて遅いんだよね
それが3個4個なると・・・
さらに、渡すのさえ面倒
構造体にまとめれば一個渡すだけでできる
918デフォルトの名無しさん:2006/08/26(土) 16:42:16
>>917
>渡した方で変数確保するから
ハァ?
919デフォルトの名無しさん:2006/08/26(土) 16:50:03
あぁすまん、「値渡した先で領域確保」だな
920デフォルトの名無しさん:2006/08/26(土) 17:44:51
(;´Д`)ハァハァ
921デフォルトの名無しさん:2006/08/26(土) 17:47:39
>>919
「値渡した先で領域確保」
プ
922デフォルトの名無しさん:2006/08/26(土) 18:18:56
まあそう書きたくなる気持ちはわからなくもない。
923デフォルトの名無しさん:2006/08/26(土) 18:28:18
参照渡しがなければポインタの値渡しするしか他にねーだろ
924デフォルトの名無しさん:2006/08/27(日) 14:42:52
ポインタを使ってないプログラムはいつ出ますか?
925デフォルトの名無しさん:2006/08/27(日) 16:48:51
インストラクションポインタさえ使わないプログラムは、まだ数十年は出てこないでしょう
926mokorimoko:2006/08/28(月) 11:33:47
d
927デフォルトの名無しさん:2006/08/28(月) 16:00:30
>>924
事実上、永久にムリ
928デフォルトの名無しさん:2006/08/28(月) 16:51:11
>>927
「事実上」とは「現時点での事象」であり、
一方「永久に」とは時間軸上の未来をも含むため
矛盾が生じています。
929デフォルトの名無しさん:2006/08/29(火) 03:55:03
つ【ワイヤードプログラム】
930デフォルトの名無しさん:2006/08/29(火) 13:02:33
ポインタを意識しないでいいプログラムは山ほどある。
931デフォルトの名無しさん:2006/08/29(火) 13:30:13
ポインタが嫌でも問題ないさ。配列使えよw
932デフォルトの名無しさん:2006/08/30(水) 01:06:20
実際std::vectorとかboost::arrayとか使い出すと
ポインタの出番って本当減るよな。
真の意味でポインタが必要な状況なんて殆ど無い、あとは参照で事足りる。
ぬるぽに意味を持たせたいだけ、ちょっぴり出番があるくらいか。

いや、リストとか自分で書いたら、嫌でも顔だすけどね。
933デフォルトの名無しさん:2006/08/30(水) 01:16:04
参照ってポインタ使ってるんだと思ってたけど違うんかな。。。
934デフォルトの名無しさん:2006/08/30(水) 01:36:53
もちろん、実装的には何も変わらないよ。
単にアドレス演算の機能を奪い取っただけのポインタ。
そしてNULL状態が存在しない。
これがでかいのさ。
935デフォルトの名無しさん:2006/08/30(水) 06:18:54
いちいちNULLかどうか心配せずに使えるポインタというか、そういう感じかな。
936デフォルトの名無しさん:2006/08/30(水) 09:36:34
うっかりさんが前後に値をスライドさせることもないよ。
937デフォルトの名無しさん:2006/08/31(木) 02:32:49
配列もポインタも同じだろ。
938デフォルトの名無しさん:2006/08/31(木) 02:38:27
全く異なる概念だと思うが
939デフォルトの名無しさん:2006/08/31(木) 03:42:48
http://www.kouno.jp/home/c_faq/c6.html

この辺だなー。
ただ、どう言い繕われても言葉遊びの様に思えてしまうことはある。
940デフォルトの名無しさん:2006/08/31(木) 04:49:36
たまたまCの実装がそうなっているというだけだろ。
941デフォルトの名無しさん:2006/08/31(木) 10:51:22
Cが諸悪の根源。
Cがプログラマにとって大切な存在になってしまったことが最大の癌
942デフォルトの名無しさん:2006/08/31(木) 10:57:02
やむをえずコンパイラを甘やかす為の仕様や記法が正解になっている世界だから
943デフォルトの名無しさん:2006/08/31(木) 11:11:42
>>941
そんなお前はA、Bすらやっていないくせにw
944デフォルトの名無しさん:2006/08/31(木) 11:17:30
A みつめあう B お話をする C 手をつなぐ

どーせ、Aもまださ
945デフォルトの名無しさん:2006/08/31(木) 11:37:08
世間のABCはそんなにヤワじゃない orz
946デフォルトの名無しさん:2006/08/31(木) 11:42:55
(・3・) エエー、ビビって、シッコ漏らしてんじゃねーYO!
947デフォルトの名無しさん:2006/09/01(金) 22:47:35
なんだ、最近の輩はA言語やB言語も知らんのか
948デフォルトの名無しさん:2006/09/01(金) 22:51:52
C++で

template <int N>
void func(int (&a)[N])

という風に配列を受け取れるのは意外と知らない人が多い。
この場合、aの型はint *ではなく、int [N] である。

まあ中にはint *としてしまう糞なコンパイラもあるが。
949デフォルトの名無しさん:2006/09/02(土) 00:40:43
>>948
いや、aの型はint (&)[N]だろ。
950デフォルトの名無しさん:2006/09/02(土) 00:56:28
>>949
typeid().name()は試してみた?
951デフォルトの名無しさん:2006/09/02(土) 01:24:35
>>948
その書き方大好き。
でもint*になるコンパイラ多すぎ。
実は処理系依存なんじゃないのか?
詳しくないけど。
952デフォルトの名無しさん:2006/09/02(土) 01:28:42
規格票で解説してあるといいね。どこを見ればいいのかな?
953デフォルトの名無しさん:2006/09/02(土) 01:49:26
>>950
typeidにT&型のオブジェクトを使用しても、参照だからTを見に行ってしまう。
だからtypeidで確認するのは無意味。
954デフォルトの名無しさん:2006/09/02(土) 01:50:36
typeid()で同じと判断されたら、同じだと思っていいんじゃね?
955デフォルトの名無しさん:2006/09/02(土) 01:55:02
>>948

#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]と認識されていたけど、
どこのコンパイラの話?
956デフォルトの名無しさん:2006/09/02(土) 02:10:39
BCCはint*になる。
957デフォルトの名無しさん:2006/09/02(土) 08:33:26
古いgccもHPのccもVC6も確かダメだな。
>template<typename T, std::size_t N> inline std::size_t numberof(T (&)[N]) {return N;}

これが通らない。
958デフォルトの名無しさん:2006/09/03(日) 01:40:55
VC6のテンプレート回りはへっぽこさんだから…

テンプレートスレになっとるがな。
959デフォルトの名無しさん:2006/09/03(日) 13:36:47
ttp://homepage3.nifty.com/mogami/diary/d0607.html#21t1
>cipherの設計の目標の一つはポインタ的な物の排除
960デフォルトの名無しさん:2006/09/03(日) 14:28:48
>排除であるが、 Ocamlもやはりポインタ的な物を含んでいる。
961デフォルトの名無しさん:2006/09/03(日) 22:44:50
Ocamlのポインタ的なものって、参照とかmutableフィールドか?
そうすると、この人の目指すところはHaskellあたりにしかないのだが。
962デフォルトの名無しさん:2006/09/04(月) 01:42:49
配列とポインタって、概念が違うだけで、実際には同じじゃね?
つうか、配列使うな。 ポインタも使うな。
使っていいのは、リスト構造。
963デフォルトの名無しさん:2006/09/04(月) 01:49:04
>>962
Cのポインタは事実上配列にアクセスすするための一手段と化している。
964デフォルトの名無しさん:2006/09/04(月) 01:53:08
確か標準関数で文字列周りはポインタで渡してたな
965デフォルトの名無しさん:2006/09/04(月) 01:58:50
いいか、ポインタの代わりに、メッセージIDを使うんだ。
欲しいオブジェクトのデータを貰うためには、そのIDとオペレーションを書いてメッセージボトルに入れて、海に流すのさ。
そうすると、メッセージボトルを受け取った相手が、それが自分宛でなければまた海に流す。
繰り返すうちにいずれは宛先の相手に届くからな。
目的の相手に届いたら、メッセージに書かれてるオペレーションを元に結果をまたボトルに入れて海に流してくれるんだ。

さあ、こうやって直接メモリーの番地を指定しなくとも、あいてに伝わる方法はあるのさ。
相手が受け取るまで手渡しリレーでもいいから、ポインタなんて使わなくていいのさ。
966デフォルトの名無しさん:2006/09/04(月) 02:09:14
>>965
そのメッセージIDをポインタと呼称しても、違和感無く他人に通じると思うよ。
967デフォルトの名無しさん:2006/09/04(月) 02:13:37
>>966
ポインタでは漂流しない
968デフォルトの名無しさん:2006/09/04(月) 02:16:35
「ここの作業よろしくね」
っといってその場所を書いた紙を作業者に渡す

場所を書いた紙 = ポインタ
969デフォルトの名無しさん:2006/09/04(月) 02:26:27
結局、ポインタと配列って、見方を変えただけの物だと思うよ。
家と言う入れ物に住所が書いてあるのは、配列に番号が振ってあるのと同じ。
ある規則によって振られた識別子ね。

ポインタというのは、強いて言えば、東経135度23分xx、北緯32度26分xxといったたぐいのもの。
機械の中身の厳密なメモリーの位置ね。
970デフォルトの名無しさん:2006/09/04(月) 02:38:25
>>967
ポインタとは違うが、最近のCPUではメモリアドレスも仮想化されて、
何段かテーブル参照をしてようやく物理メモリのアドレスを得ることもある。
それがなんだか漂流とは違うけど、似たようなものを感じ取った。
971デフォルトの名無しさん:2006/09/04(月) 02:38:29
ポインタの主な使われ方の一つに連続要素の参照があるだけで
全然違うものだと思うんだが。
972デフォルトの名無しさん:2006/09/04(月) 02:41:25
配列を覚えるだけで、
ポインタを完全に使いこなせるようになるなら同じものといえる。
そうでないなら実質的に違うもの。
973デフォルトの名無しさん:2006/09/04(月) 02:44:49
Cみたいに配列とポインタに違いを見出せない人がいるほど密接な言語ばかりではないんだよ。
974デフォルトの名無しさん:2006/09/04(月) 02:48:24
>>972
それって配列は知ってるけどメモリ上にどう格納されてるのか知らないから
違うって話じゃないのか?
975デフォルトの名無しさん:2006/09/04(月) 09:36:46
>>974
いや、学習にかかるコストの話。
ポインタを使うには、ポインタ演算や間接参照、ポインタのポインタ、
ヌルポインタの対処など色々学習する必要がある。
同じと見なすには新たに覚えることが多すぎるのでは?ということ。
976デフォルトの名無しさん:2006/09/05(火) 00:32:32
>>975
まぁポインタ習得は結構時間かかったけどな
でも苦労しただけの価値はあると思うよ

ポインタ知らない頃のソース見ると多重ループの山で
ソースが画面右はみだしてたからな
977デフォルトの名無しさん:2006/09/05(火) 02:16:36
昔すぎてよく憶えてないけど、
ポインタ使うのにそんな苦労した記憶ないなあ。
僕が読んだ本ではかなり最初の方でポインタの解説してたし
ソースをガリガリ書くようになったのは一通り覚えた後だったからかな。
978デフォルトの名無しさん:2006/09/05(火) 02:49:52
覚えちまえば何のことはないし、
何で覚えるのに苦労するのかすらわからなくなるが、
初めて出くわした時には確実に蹴躓いてる、それがポインタ。

つーか実のところポインタが難しいんじゃなくって、それで実装される
リストとかのデータ構造の学習が難しいんじゃなかろうか。
979デフォルトの名無しさん:2006/09/05(火) 09:59:18
俺は機械語→アセンブリ→PL/M→C と来たから
なんでポインタが理解できないのかが理解できない。

>>978 後段落
それはない。それ以前で躓いている。
980デフォルトの名無しさん:2006/09/06(水) 01:34:21
ポインタの方が効率的で解りやすい時もあるよ。
なんでもかんでも配列でやるのは、かえって複雑になるよ。
981デフォルトの名無しさん:2006/09/06(水) 06:51:18
ポインタで躓いた記憶はあるけど、いつの間にか使えるようになってた。
「こういう時にこう使うんだ」って体験を積み重ねていけば、
その内体で覚えられるんじゃないかな。
982デフォルトの名無しさん:2006/09/06(水) 17:55:27
ついにこのスレも980超えたか
983デフォルトの名無しさん:2006/09/06(水) 18:14:57
煽り気味のスレタイのわりに面白かった。
やっぱそう思う人が多いってことなんだろうな。
984デフォルトの名無しさん:2006/09/07(木) 03:32:24
Cで最初に蹴つまずく壁だろうからなー。
読んだことは無いが、Cのポインタだけで一冊書いた本とか出てなかったっけ。
一冊分も書くことがあるのが不思議ではあるが。
985デフォルトの名無しさん:2006/09/07(木) 17:46:03
ポインタ完全制覇は結構面白かった
986デフォルトの名無しさん:2006/09/08(金) 02:20:48
>>985
何が書いてあるの?
興味ある。
987デフォルトの名無しさん:2006/09/08(金) 02:46:54
以下ポインタ完全制覇の要約で感動のフィナーレ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
988デフォルトの名無しさん:2006/09/08(金) 03:42:46
ポインタが完全制覇できます
989デフォルトの名無しさん:2006/09/08(金) 03:43:23


  〜  完  〜

990デフォルトの名無しさん:2006/09/08(金) 03:44:14
991デフォルトの名無しさん:2006/09/08(金) 21:10:20
991
992デフォルトの名無しさん:2006/09/08(金) 21:11:11
992
993デフォルトの名無しさん:2006/09/08(金) 21:11:54
993
994デフォルトの名無しさん:2006/09/08(金) 21:12:36
994
995デフォルトの名無しさん:2006/09/08(金) 21:13:15
995
996デフォルトの名無しさん:2006/09/08(金) 21:14:17
996
997デフォルトの名無しさん:2006/09/08(金) 21:16:36
aa
998デフォルトの名無しさん:2006/09/08(金) 21:17:37
998
999デフォルトの名無しさん:2006/09/08(金) 21:18:30
999
1000デフォルトの名無しさん:2006/09/08(金) 21:19:09
>>1
死ね。氏ねじゃなくて、死ね。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。