[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/28 01:12 / Filesize : 253 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 142



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

962 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 18:35:07.38 ID:2J1yyAIT0.net]
>>946
>>947
hoge()でdata->valueに値をセットしたいです。
10を表示したいです。

963 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:06:17.58 ID:N2zX2Cru0.net]
void hoge(data_t **data, int value) {
 *data = NULL;
 *data = malloc(sizeof(data_t));
 if (data == NULL) return;
 (*data)->value = value;
}

呼び出しを
 hoge(&data,10);

これではどうか

964 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:07:10.40 ID:N2zX2Cru0.net]
if (*data == NULL) return;

ここ間違えた、訂正

965 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:12:01.89 ID:2J1yyAIT0.net]
>>949
ありがとうございます。
できました!超天才!

966 名前:デフォルトの名無しさん [2017/10/25(水) 19:16:50.46 ID:Ho4Id2OA0.net]
そういうことか
全然分からんかった
引数に受け渡されたポインタ変数のコピーに新しく確保したメモリのアドレス入れても呼び出し元のポインタ変数はなんも変化しないのか

967 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:21:03.77 ID:BohOgQqE0.net]
引数で int の変数を書き換えても 呼び出し元には伝わらない それの延長線
int を data_t* に読み替えれば同じ理屈よ

968 名前:デフォルトの名無しさん [2017/10/25(水) 20:39:40.86 ID:Ls3qnFv30.net]
俺の頭じゃあ理解できなかったわアロー関数は苦手だ、ここには天才がやっぱいるわ

969 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 22:59:11.01 ID:SHE9E59e0.net]
この程度でプロとか天才とかw レベル低っ

970 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 23:31:22.55 ID:A9sEwxck0.net]
追い詰められてる時って、ちょっとしたことを見落としたりしがちだし。
そういうときにちょっとしたつまらない問題点を指摘してくれる人が神様に思えることはある。
本当に何でこれに気づかない?って問題に延々と気づかないことあるから。



971 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 01:05:20.57 ID:WmOJzpQL0.net]
実務の世界だと、開発リーダーにとっては、この程度はさらさらと書いて欲しいと思うだろうな
この辺の考え方が理解できてないと、構造体を使ったリスト構造、木構造が作れないと思う

972 名前:デフォルトの名無しさん [2017/10/26(木) 01:22:11.08 ID:FPgm8C1h0.net]
急に語り出したぞ、おい

973 名前:デフォルトの名無しさん [2017/10/26(木) 03:22:11.49 ID:kwyo2eDl0.net]
リスト構造、木構造という言葉がわからなかったのかな?

974 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 03:35:02.17 ID:ByFyiJTd0.net]
分からなくてもググれば速攻定義出ますがな

975 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 06:24:41.35 ID:8UQnYlEC0.net]
>>944 からの流れだとすると、実務で使う人とは感じなかったな。
専門外の学生さんが単位を取るために四苦ハック、
進級できたら思い出しもしない、という立場からの質問だろうと。

976 名前:デフォルトの名無しさん [2017/10/26(木) 10:26:24.17 ID:Z8IKw2VS6.net]
リスト構造木構造とか理系大学の情報系科目で誰でもやるがな
こんなところ見てる奴が知らんわけないだらアホ

977 名前:デフォルトの名無しさん [2017/10/26(木) 10:46:18.77 ID:DmfMCHFwp.net]
リストもツリーも基本の構造は一緒だろ。
ただ、鎖ね繋がってる数が違うから、
扱いが違うだけでな。

978 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 12:26:11.84 ID:nuX2FTeTa.net]
文系経済学部ですわ

979 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 12:46:06.22 ID:oyaJ8gC3M.net]
>>962
> こんなところ見てる奴が知らんわけないだらアホ
>>952みたいな奴もいるのに何を言ってるんだよ w

980 名前:デフォルトの名無しさん [2017/10/26(木) 12:51:34.13 ID:jbwuNtau6.net]
>>965
リスト構造とか知ってるからってポインタ受け渡しのトリックに気付くとは限らんだろ



981 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 13:41:10.56 ID:VaLFaSbf0.net]
怪しくなったら戻り値で返せ

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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<253KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef