C言語なら、俺に聞け! <24>
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART4
http://pc.2ch.net/test/read.cgi/tech/1022961238/l50
・前スレ
<23> http://pc.2ch.net/test/read.cgi/tech/1023024817/l50
コンパイラなどのリンクは>>2-3
0153デフォルトの名無しさん
NGNGxは2重ポインタ。
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGdouble *の正体がないから。
double ** -> double * -> double って具合に2段にわたって参照するので、
途中通過する double * も必要。
015691
NGNG上のレス見たらよけいわからんなった
ちなみに自分は連立方程式の数値解を求める関数を書きたかったのです
fortran90ならこんなのちょろいのになー C言語むづすぎ
0157デフォルトの名無しさん
NGNGこれこそ、>>110の言ってたポインタのポインタの話じゃないか?
0158デフォルトの名無しさん
NGNG2chはいきなり初心者モード無視して答えを書いてくるヤシが多い
ので、かえって混乱するかも。でもいつか理解できる。
015991
NGNGそういうのを専門でやってる人いませんかねえ
いたらポインタと配列についてコンパイラ実装者の立場から説明して欲しい
016091
NGNG関数に二次元配列を渡せないのでしょうかね?
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGint a[4][5]ならint (*b)[5]
0163デフォルトの名無しさん
NGNGアセンブラを覚えれば分かるよ。
0164デフォルトの名無しさん
NGNG016591
NGNG関数を書けないですかね?
ポインタつかわんでmalloc使わんで
0166デフォルトの名無しさん
NGNGPerlでも使えよ・・・
0167デフォルトの名無しさん
NGNGC++使え
0168デフォルトの名無しさん
NGNGポインタを使わないって時点で無理。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGこーぞーたいのメンバーにすれば渡せないこともない。
0172デフォルトの名無しさん
NGNG支離滅裂
017391
NGNGそれは無駄にメモリ使う上に柔軟性がないでしょ > 164
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGUNIX板からの刺客?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGだから最初の要素以外の大きさはコンパイル時に
決定していなければならないわけで、>>152はよくて
#define N 100
double (*hoge(int n))[N]
{
double (*x)[N] ;
x = (double(*)[N])malloc(sizeof(double)*n*N) ;
return x ;
}
のようにしかできない
017891
NGNG0179デフォルトの名無しさん
NGNGなんでCにこだわるの?
0180デフォルトの名無しさん
NGNGこういうのばっかりだから
0181デフォルトの名無しさん
NGNG好きな大きさのメモリを確保してほしい。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG0184177
NGNG最初がいらないのは受け渡しのときだけだ
0185デフォルトの名無しさん
NGNG018691
NGNGCむづかしすぎ
みんなもよくわかってないっぽいし
0187デフォルトの名無しさん
NGNGわかってないのはおまえと110だけだと思われ
0188デフォルトの名無しさん
NGNG分かっているから無理だと言っているんだろ(ワラ
018991
NGNGでわaはなんですか?
0190デフォルトの名無しさん
NGNG考えがスマートに書ける。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG配列名だよ!
019491
NGNGむづかしすぎたかな
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG> ポインタと配列についてコンパイラ実装者の立場から説明して欲しい
以前に書いたヤツだと、こんな感じやねぇ。
| l_value '[' expr_ ']' {
struct comp_node *offnp;
struct cast_info *cast;
if (!cast_is_array($1->cn_cast))
yynotice(COMP_ERRMSG_ELEM_NOARRAY);
else if (!cast_equal(node_get_cast($3), CAST_INT))
yynotice(COMP_ERRMSG_INDEX_NOTINT);
cast = cast_element($1->cn_cast);
/* offset <- expr_ '*' size */
offnp = node_create_op2(CAST_INT, $3,
node_create_valint(cast_size(cast)), OPR_MUL);
$$ = node_create_lv_off(cast, $1, offnp);
}
| '*' l_value %prec PREC_DEREF {
if (!cast_is_pointer($2->cn_cast))
yynotice(COMP_ERRMSG_DEREF_NONPTR);
$$ = node_create_rlv(cast_deref($2->cn_cast), $2);
}
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGint a[n]はint型をn個持つ配列。
int a[n][m]はint型をm個持つ配列をn個持つ配列。
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG識別子です。
そろそろやめたら(ボソ
020191
NGNG0202デフォルトの名無しさん
NGNGそして日本語すらよく分かっていないな。
>むづかしすぎたかな
0203198
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG91にはCは無理だ、あきらめな
0206デフォルトの名無しさん
NGNGそれだ!それを91は理解しないと
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG二次元配列諦めて、ポインタのポインタにしたら?
double **d;
d = (double **)malloc(sizeof(double *) * 100);
for (i = 0; i < 100; i++)
d[i] = (double *)malloc(sizeof(double) * 100);
で、見かけ上d[100][100]まで使えるから。ただし、これを受け取る関数も
double **で受け取ること。それに、xとyの次元も指定しなければならない
から、
struct dd {
int x, y;
double **d;
};
のように構造体にした方が柔軟性が増す。
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGそれを91は嫌がっているんだよ(笑)
0211デフォルトの名無しさん
NGNG>ポインタむづかしすぎ!C言語挫折しそうですわ
.,/ ̄ ̄\.
.,/ ____ \.
/ /川〃ノ\. ヽ.
( (ミ/⌒ヽ三) ) / ̄ ̄ ̄ ̄ ̄
ヽ. ヽ| ´∀` |ノ .ノ < オマエダケー
 ̄| .::| ̄ \_____
|____|
0212デフォルトの名無しさん
NGNGふーん。何でこんなにもめているのか理解できたっすよ。(藁
0213110
NGNG021491
NGNG上に貼ったソース まさにそのやりかたです。
いちいちそんなめんどくさいことしないとできないのかあ
ポインタのこと考えないで配列の受渡ししたい
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGもうほっときなって。
0217デフォルトの名無しさん
NGNGPerlを薦めるよ。
0218デフォルトの名無しさん
NGNG頭固すぎ
他言語使えって
0219デフォルトの名無しさん
NGNG022091
NGNG0221デフォルトの名無しさん
NGNGJava使えるならJava使えよ!!(;_;)
0222デフォルトの名無しさん
NGNGあれはポインタのポインタと同じ
0223デフォルトの名無しさん
NGNGそれをしたかったら、もっと高級な言語を使え。
メモリアドレスが1次元である以上、どこかで行と列の計算をする必要があるだろ。
そんなことまでCは面倒見てくれない。
0224デフォルトの名無しさん
NGNG022591
NGNG0226デフォルトの名無しさん
NGNGそりゃおまえがネタだと見抜かれてるからね
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGCは配列の扱いについて、極端に単純化して、一次元配列しか
基本的には使えなくなっていると思われ。
022991
NGNG↑Javaだとこんな感じで配列の大きさ指定しないで関数に渡せて便利ですな
0230デフォルトの名無しさん
NGNG配列もオブジェクトの一種ですからな。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGポインタ変数の宣言ってどうやるの?
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG*
023591
NGNGdouble *p;
0236デフォルトの名無しさん
NGNG親切度が半端
0237デフォルトの名無しさん
NGNG今日はしたい気分なんだ、いいだろ。
023891
NGNG0239デフォルトの名無しさん
NGNGはげどー
91みたいなどうしようもないやつを生んでしまうもんな。
0240デフォルトの名無しさん
NGNG禿同
024191にとっては
NGNG0242デフォルトの名無しさん
NGNGうん、糞だ。
しかし、その糞さえもろくに(略
0243デフォルトの名無しさん
NGNGそれを「便利」と思うか「余計なお世話」と思うかは、微妙なところだ。少なくとも
処理系を実装する立場から言えば C は、適度に小さく強力で、良い言語だろう。
ところで 91 は >>196 へのコメントはないの?
0244デフォルトの名無しさん
NGNGちょっと同感ついでに>>91も糞
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNGさしてきた様子。迷わずFORTRANやjavaに逝ってよし。
0247デフォルトの名無しさん
NGNG理解できるわけないじゃん
0248デフォルトの名無しさん
NGNGもっと落ち着け
0249デフォルトの名無しさん
NGNG付き合ってあげるこのム板住人のやさしさ。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGROMっている人のため。
0252デフォルトの名無しさん
NGNG語りつくしてくださいというから語っているのさ(w
■ このスレッドは過去ログ倉庫に格納されています