- 1 名前:デフォルトの名無しさん [2017/08/10(木) 20:21:23.44 ID:hEocmkh50.net]
- C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ 前 mevius.2ch.net/test/read.cgi/tech/1500293207/ www.geocities.jp/c_cpp_cs/about_c/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 982 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 14:50:55.37 ID:ujDNQjK/M.net]
- そういうときに限って二つ返したくなる
- 983 名前:デフォルトの名無しさん [2017/10/26(木) 18:29:14.01 ID:l+WAoJAx
]
- [ここ壊れてます]
- 984 名前:0.net mailto: 自分の知ってる関数解ってる宣言の仕方ならわかるけどさ解らない奴使ってたらもう変数が動いてるかわからんだろう
そうなったらもう謎でコードなんか読めないだろ? [] - [ここ壊れてます]
- 985 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 18:40:00.02 ID:6866r+hk0.net]
- んなこたぁ、ない
- 986 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 18:44:09.81 ID:AI1MxGuX0.net]
- 引数の書き戻し系は 渡すときに値を必要としてるのかどうかは仕様次第なので 少し気を使う
- 987 名前:デフォルトの名無しさん [2017/10/26(木) 20:03:01.42 ID:DmfMCHFwp.net]
- それより、そのアドレスはアクセス権のある場所を指してるんだよな?
- 988 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 21:41:04.91 ID:oyaJ8gC3M.net]
- >>966
レベルの問題 > リスト構造とか知ってるからってポインタ受け渡しのトリックに気付くとは限らんだろ そんな奴がいないとは言わないがそう言う奴はごろごろいるとは思えないだろ
- 989 名前:デフォルトの名無しさん [2017/10/26(木) 21:42:34.03 ID:Fjma9sq90.net]
- とりまリスト構造なんて誰でもしってること
>>959のレスはイミフ
- 990 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 03:11:40.50 ID:QY+Fa/Ak0.net]
- >>966
これはトリック、か?
- 991 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 06:49:46.56 ID:VPed4ksO0.net]
- 「関数の引数に値渡ししかないから、
ポインタを渡すことで呼出側の変数の内容を関数側で変更する」 というのが他の言語と比較した場合、C特有のトリックと呼べるかも。 もちろん、Cの村では当然かつ基本のことだけど。
- 992 名前:デフォルトの名無しさん [2017/10/27(金) 08:36:39.71 ID:JYNAFOfl0.net]
- たくさん値を返したいなら、
戻り値を型宣言した構造体にしたらいい。
- 993 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 09:39:08.11 ID:a5gmSSmH0.net]
- 残念だったな、トリックだよ
- 994 名前:デフォルトの名無しさん [2017/10/27(金) 09:42:57.69 ID:Q7q08ysx0.net]
- >>977
autoでもできるのですか?
- 995 名前:デフォルトの名無しさん [2017/10/27(金) 09:57:16.24 ID:CUGbjFhkp.net]
- ああ、昔はauto変数に取った構造体を戻り値にして割り込み系で散々な目に遭ったよな。
あれは言語仕様に沿って無いコンパイラが悪いんだがな。
- 996 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 10:00:31.70 ID:v/FEPkkV0.net]
- 古いコンパイラではNGだったけど
構造体の引数での値渡し、戻り値での値戻しは可能
- 997 名前:デフォルトの名無しさん [2017/10/27(金) 10:18:09.15 ID:CUGbjFhkp.net]
- 古くなくてもニッチな環境では要注意だ。
コンパイラの吐き出すコードが言語仕様に沿って無い場合がある。
- 998 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 10:27:32.22 ID:8fSPZcAJ0.net]
- >>976
トリックと言うか他の言語ではコンパイラがやってることをアセンブラやCでは明示的に書くと言うだけ
- 999 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 13:06:16.96 ID:v/FEPkkV0.net]
- >>982
なんてこったw ニッチな環境だとメンテもされてないことあるだろうしねー
- 1000 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 15:36:47.12 ID:dGyUnw2Y0.net]
- ホワイトスミスなんて、printfすら無いような処理系作って
いた人がANSIの役員していて2度びっくり
- 1001 名前:デフォルトの名無しさん [2017/10/27(金) 18:41:59.37 ID:BvMxy0d+0.net]
- C言語のポインタで
int *a; int b; a = 10; これは理解できるんだけど a = &b; *a = 10; これはどうなってるん?aにアドレス入ってるのにどうやって10を送ってるん?
- 1002 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 18:47:48.96 ID:/LUCvRWS0.net]
- > int *a;
> a = 10; > これは理解できるんだけど 説明できるのなら その先も分かるはず
- 1003 名前:片山博文MZ mailto:sage [2017/10/27(金) 18:49:13.82 ID:xRxq9X9wd.net]
- >>986
> int *a; > int b; > a = 10; //エラー。ポインタに整数は代入できない。そもそも全角文字と半角文字を間違っている。 > a = &b; > *a = 10; アスタリスク(*)で実体の整数データを手繰り寄せているイメージね。
- 1004 名前:デフォルトの名無しさん [2017/10/27(金) 18:55:00.02 ID:BvMxy0d+0.net]
- >>988
*aで中にあるアドレスで探って送ってるイメージ?
- 1005 名前:片山博文MZ mailto:sage [2017/10/27(金) 18:57:22.58 ID:xRxq9X9wd.net]
- うん。アスタリスクを付ければ、アドレス先への代入になる。
ポインタにゼロ以外の整数は代入できないに訂正。
- 1006 名前:デフォルトの名無しさん [2017/10/27(金) 19:14:00.54 ID:CUGbjFhkp.net]
- 宣言とフィールドで意味の違う*が悪い。
- 1007 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 19:16:29.79 ID:t/XrhBpFM.net]
- アーキテクチャとアセンブリ言語勉強するのが早道な気がする
- 1008 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 19:19:35.75 ID:t/XrhBpFM.net]
- >>991
意味は同じだよ。*aがintだと宣言してるから整合してる。 初期化構文がちょいと怪しいが。
- 1009 名前:デフォルトの名無しさん [2017/10/27(金) 19:21:42.60 ID:CUGbjFhkp.net]
- >>993
宣言ではポインタである事を表すが、 フィールドでは、掛け算記号だったり、ポインタの内容だったりするだろ?
- 1010 名前:デフォルトの名無しさん [2017/10/27(金) 19:56:47.39 ID:BvMxy0d+0.net]
- char *c;
int *a; この二つはポインタだけど使い方が違うのか?
- 1011 名前:片山博文MZ mailto:sage [2017/10/27(金) 20:00:41.33 ID:xRxq9X9wd.net]
- sizeof(*c) == sizeof(char)で、
sizeof(*a) == sizeof(int)だ。
- 1012 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 20:11:43.60 ID:HlvRN0vUF.net]
- Cの文法特にポインタ宣言周辺は、
頭が悪いと読めないよう定められてる。 ソフトウェア開発は馬鹿でも手伝わせる 必要があるくらい人手不足なのに、 なんでこんな文法にしたのか不思議。
- 1013 名前:デフォルトの名無しさん mailto:sage [2017/10/27(金) 20:21:32.42 ID:3Ly7XcHr0.net]
- えっ、Cの由来を知らないの?
- 1014 名前:片山博文MZ mailto:sage [2017/10/27(金) 20:26:24.89 ID:xRxq9X9wd.net]
- 次スレお願い
- 1015 名前:あぼーん mailto:あぼーん [2017/10/27(金) 21:22:14.66 ID:zFbk1AXy0.net]
- あぼーん
- 1016 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 78日 1時間 0分 51秒
- 1017 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|