10/02/14 05:02:57
頭の悪さについては置いといて、適当に作ったのはガチだよな
774:デフォルトの名無しさん
10/02/14 10:36:55
>>769
>なので、pt+2までは有効だが、さらに1足した時点でptの値の妥当性は保証されなくなる。
有効でなくなるのと、有効でない場合にヌルポになるかどうかはまた別問題だろう。
775:デフォルトの名無しさん
10/02/14 12:06:46
int a[2];
int *pt = a;
って言いたいのかな
別にptなんか使わなくても右辺値なんだからa+2とか書いていいと思うけど
776:デフォルトの名無しさん
10/02/14 16:56:41
アホのオナニーレスに付き合うなよ
777:デフォルトの名無しさん
10/02/14 18:19:10
>>774
別問題だが、なっても問題がない。
778:デフォルトの名無しさん
10/02/15 19:28:04
ポインタ演算に領域サイズなんて一切無関係。
malloc, freeの時しか領域サイズに関する情報は扱わない。
double a[5];
を
void aho(double *b);
に
aho(a+3)
とかで渡してahoが領域情報とかわかるわけないのに勝手にポインタ演算の結果に確保された領域が反映されるわけないだろ。
779:デフォルトの名無しさん
10/02/15 19:34:41
日本語で
780:デフォルトの名無しさん
10/02/15 21:11:51
C言語で
781:デフォルトの名無しさん
10/02/16 02:25:27
778は動的に範囲チェックしろと言いたいんだろうけど、
そのためのオーバーヘッドがない言語というのも必要なんだよ。
範囲チェックが必要になったらvector::atを使えばいいし。
782:デフォルトの名無しさん
10/02/16 02:25:35
>>778
普通に実装するなら、まぁ、俺もそう実装するだろなぁ。
783:デフォルトの名無しさん
10/02/17 01:27:13
ポインタ演算に領域サイズなんて一切無関係。
malloc, freeの時しか領域サイズに関する情報は扱わない。
int *pi = 0x00000000;
char *pc = 0x00000000;
pi++;
pc++;
// pi = 0x0000004
// pc = 0x0000001
784:デフォルトの名無しさん
10/02/17 09:58:54
char (*p)[10] = 0;
p++;
// p == ?
785:デフォルトの名無しさん
10/02/17 11:01:39
初心者の素朴な疑問を垂れ流すスレじゃねぇ
配列の初期化でググれ
786:デフォルトの名無しさん
10/02/17 11:46:57
>785
配列?!
>784
p == (char (*)[])((char *)0 + sizeof(char [10]))
787:デフォルトの名無しさん
10/02/20 03:09:47
配列じゃなく関数ポインタだろ
788:デフォルトの名無しさん
10/02/20 03:10:41
間違えた
関数ポインタの配列だろ
789:デフォルトの名無しさん
10/02/20 03:11:31
じゃあ配列じゃねーか
ごめん間違えたもういいや
790:デフォルトの名無しさん
10/02/20 14:07:59
普通は複雑なデータは構造体使うから
複雑な配列ポインタはあんまり使わない。
791:デフォルトの名無しさん
10/07/04 20:14:23
じゃあ、もうめんどくさいし、Cは高級でも低級でもない、ミドルクラスの中級言語ということでFA?
ドライバとかファームとか、なんかハードウェアとアプリケーションの中間に使われるじゃない。
かといって、アセンブラほどローレベルではないという感じで。
ミドルクラス言語と呼ぼうではないか。
792:デフォルトの名無しさん
10/07/04 21:02:10
高級アセンブラとか揶揄されることもあるな
793:デフォルトの名無しさん
10/07/04 23:08:20
C系列の中でもJavaの糞さは際立っている。