C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
そういうことか
全然分からんかった
引数に受け渡されたポインタ変数のコピーに新しく確保したメモリのアドレス入れても呼び出し元のポインタ変数はなんも変化しないのか 引数で int の変数を書き換えても 呼び出し元には伝わらない それの延長線
int を data_t* に読み替えれば同じ理屈よ 俺の頭じゃあ理解できなかったわアロー関数は苦手だ、ここには天才がやっぱいるわ 追い詰められてる時って、ちょっとしたことを見落としたりしがちだし。
そういうときにちょっとしたつまらない問題点を指摘してくれる人が神様に思えることはある。
本当に何でこれに気づかない?って問題に延々と気づかないことあるから。 実務の世界だと、開発リーダーにとっては、この程度はさらさらと書いて欲しいと思うだろうな
この辺の考え方が理解できてないと、構造体を使ったリスト構造、木構造が作れないと思う リスト構造、木構造という言葉がわからなかったのかな? >>944 からの流れだとすると、実務で使う人とは感じなかったな。
専門外の学生さんが単位を取るために四苦ハック、
進級できたら思い出しもしない、という立場からの質問だろうと。 リスト構造木構造とか理系大学の情報系科目で誰でもやるがな
こんなところ見てる奴が知らんわけないだらアホ リストもツリーも基本の構造は一緒だろ。
ただ、鎖ね繋がってる数が違うから、
扱いが違うだけでな。 >>962
> こんなところ見てる奴が知らんわけないだらアホ
>>952みたいな奴もいるのに何を言ってるんだよ w >>965
リスト構造とか知ってるからってポインタ受け渡しのトリックに気付くとは限らんだろ 自分の知ってる関数解ってる宣言の仕方ならわかるけどさ解らない奴使ってたらもう変数が動いてるかわからんだろう
そうなったらもう謎でコードなんか読めないだろ? 引数の書き戻し系は 渡すときに値を必要としてるのかどうかは仕様次第なので 少し気を使う それより、そのアドレスはアクセス権のある場所を指してるんだよな? >>966
レベルの問題
> リスト構造とか知ってるからってポインタ受け渡しのトリックに気付くとは限らんだろ
そんな奴がいないとは言わないがそう言う奴はごろごろいるとは思えないだろ とりまリスト構造なんて誰でもしってること
>>959のレスはイミフ 「関数の引数に値渡ししかないから、
ポインタを渡すことで呼出側の変数の内容を関数側で変更する」
というのが他の言語と比較した場合、C特有のトリックと呼べるかも。
もちろん、Cの村では当然かつ基本のことだけど。 たくさん値を返したいなら、
戻り値を型宣言した構造体にしたらいい。 ああ、昔はauto変数に取った構造体を戻り値にして割り込み系で散々な目に遭ったよな。
あれは言語仕様に沿って無いコンパイラが悪いんだがな。 古いコンパイラではNGだったけど
構造体の引数での値渡し、戻り値での値戻しは可能 古くなくてもニッチな環境では要注意だ。
コンパイラの吐き出すコードが言語仕様に沿って無い場合がある。 >>976
トリックと言うか他の言語ではコンパイラがやってることをアセンブラやCでは明示的に書くと言うだけ >>982
なんてこったw
ニッチな環境だとメンテもされてないことあるだろうしねー ホワイトスミスなんて、printfすら無いような処理系作って
いた人がANSIの役員していて2度びっくり C言語のポインタで
int *a;
int b;
a = 10;
これは理解できるんだけど
a = &b;
*a = 10;
これはどうなってるん?aにアドレス入ってるのにどうやって10を送ってるん? > int *a;
> a = 10;
> これは理解できるんだけど
説明できるのなら その先も分かるはず >>986
> int *a;
> int b;
> a = 10; //エラー。ポインタに整数は代入できない。そもそも全角文字と半角文字を間違っている。
> a = &b;
> *a = 10;
アスタリスク(*)で実体の整数データを手繰り寄せているイメージね。 >>988
*aで中にあるアドレスで探って送ってるイメージ? うん。アスタリスクを付ければ、アドレス先への代入になる。
ポインタにゼロ以外の整数は代入できないに訂正。 アーキテクチャとアセンブリ言語勉強するのが早道な気がする >>991
意味は同じだよ。*aがintだと宣言してるから整合してる。
初期化構文がちょいと怪しいが。 >>993
宣言ではポインタである事を表すが、
フィールドでは、掛け算記号だったり、ポインタの内容だったりするだろ? char *c;
int *a;
この二つはポインタだけど使い方が違うのか? sizeof(*c) == sizeof(char)で、
sizeof(*a) == sizeof(int)だ。 Cの文法特にポインタ宣言周辺は、
頭が悪いと読めないよう定められてる。
ソフトウェア開発は馬鹿でも手伝わせる
必要があるくらい人手不足なのに、
なんでこんな文法にしたのか不思議。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 78日 1時間 0分 51秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。