!extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 151
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ cf8f-fy95)
2019/04/02(火) 11:23:37.62ID:SQXqRaAc0300さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ b501-VySk)
2019/04/30(火) 18:41:15.22ID:lzNlO/OB0 >>299
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。
>>299
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
https://ideone.com/l3ZslT
ideone と x64/gcc/cygwin でも結果が変わってしまいます…
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
https://ideone.com/l3ZslT
ideone と x64/gcc/cygwin でも結果が変わってしまいます…
302さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ b501-VySk)
2019/04/30(火) 18:51:26.51ID:lzNlO/OB0 str[5]以降は決まってないから調べてもあまり意味がない。多分ゴミデータ。
303デフォルトの名無しさん (ワッチョイ e501-SN11)
2019/04/30(火) 19:09:43.34ID:QYNECMA50304デフォルトの名無しさん (ワッチョイ 65b3-6xWl)
2019/04/30(火) 19:30:23.83ID:CZMZfk1L0 >>303
str[4]は'\n'じゃね?
str[4]は'\n'じゃね?
305デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/04/30(火) 19:42:59.90ID:ZdpyyptHa まあ改行入れたら改行ですね
306デフォルトの名無しさん (ワッチョイ a373-MRXB)
2019/05/01(水) 00:16:42.15ID:pM2+GGDK0 自作関数内のエラー時にerrnoに値をセットするのってマナー違反ですか?
307デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/05/01(水) 00:27:56.20ID:Lv+8X8zta 入れられるもんなら入れてみろ
308デフォルトの名無しさん (ワッチョイ 4b63-MRXB)
2019/05/01(水) 01:10:53.33ID:dGckAS/m0 信長 入れられないなら殺してしまえそのプロセス
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる!
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる!
309306 (ワッチョイ a3c5-MRXB)
2019/05/01(水) 02:42:38.43ID:LlVhs4fx0 https://ideone.com/JeNdi9
こういうエラー処理を書きたいんですが
こういうエラー処理を書きたいんですが
310デフォルトの名無しさん (アウアウウー Sae9-lbZQ)
2019/05/01(水) 13:05:10.79ID:Vm5gAWGsa311デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/05/01(水) 14:38:29.13ID:pGaFGHQ6a312デフォルトの名無しさん (JP 0H13-1PXK)
2019/05/01(水) 14:41:59.38ID:yF2N0E1tH >>304
%c は空白文字は入らないのでは?
%c は空白文字は入らないのでは?
313デフォルトの名無しさん (アウアウエー Sa13-9UpB)
2019/05/01(水) 15:19:37.49ID:pGaFGHQ6a %cは文字は全部入る。
受け付ける文字をはっきりさせたいなら[]使うのがよい。
受け付ける文字をはっきりさせたいなら[]使うのがよい。
314デフォルトの名無しさん (ワッチョイ 7fda-51S+)
2019/05/02(木) 12:01:07.73ID:oq2ExZVd0 printf()のペアっぽいからという理由で
scanf()を使わせる初心者本をこの世から駆逐すべき
scanf()を使わせる初心者本をこの世から駆逐すべき
315デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/02(木) 12:52:42.24ID:Yg4L14jR0 使い方を熟知している人が使う分には問題ないが
「良い子はマネをしてはいけません」の典型だな
「良い子はマネをしてはいけません」の典型だな
316デフォルトの名無しさん (ワッチョイ 62a5-PJjo)
2019/05/02(木) 13:24:17.15ID:+EePt9KB0 初心者はただ値が入力できりゃ楽しいんじゃね
ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる
ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる
317デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/02(木) 15:41:08.09ID:jQNzLmJja 昔のマイコン的なものだと暴走したりしてなお良い。
core dump してるようじゃまだまだ安全過ぎる。
core dump してるようじゃまだまだ安全過ぎる。
318デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/02(木) 19:38:22.59ID:lQcGaGZC0 たしかにscanfが危険なものだと知った時にどうやってfgetsに置き換えるか考えたの思い出した
319デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:18:22.90ID:H376nx5x0 >>287
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか?
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか?
320デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:20:29.21ID:H376nx5x0321デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 21:21:11.50ID:TaSBDpemM322デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:22:02.02ID:H376nx5x0 >>315
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない
323デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:24:27.49ID:H376nx5x0324デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:25:23.96ID:H376nx5x0 匿名掲示板だから逃げたければ逃げられるが
おまえさんの人間性の問題が変わるわけではない
おまえさんの人間性の問題が変わるわけではない
325デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 21:34:15.84ID:TaSBDpemM 馬鹿丸だし(笑)
論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆)
論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆)
326デフォルトの名無しさん (ワッチョイ f7dc-ahOC)
2019/05/02(木) 21:53:25.96ID:TlCaXbcx0 院生とかめっちゃ高評価じゃんw
俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン
俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン
327デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 21:55:19.32ID:H376nx5x0 学歴コンプレックスまる出しだな
頭隠して尻隠さずw
頭隠して尻隠さずw
328デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 22:04:26.88ID:TaSBDpemM 院生の意味が理解できない馬鹿(笑)
329デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/02(木) 22:05:27.60ID:TaSBDpemM 学歴など無意味
馬鹿は馬鹿(笑)
馬鹿は馬鹿(笑)
330デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/02(木) 22:06:18.25ID:BLoepDOP0 >>319
何を言いたいのか意味不明w
何を言いたいのか意味不明w
331デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/02(木) 22:22:28.19ID:H376nx5x0 効いてる効いてるw
突然論文ゼロとか言い出すカモは扱いやすすぎ
突然論文ゼロとか言い出すカモは扱いやすすぎ
332デフォルトの名無しさん (アウアウクー MM9f-I0oC)
2019/05/03(金) 00:28:15.71ID:ykdjIw3IM #include <stdio.h>
int main(void){
remove("https://mevius.5ch.net/test/read.cgi/tech/1554171817/");
return 0;
}
int main(void){
remove("https://mevius.5ch.net/test/read.cgi/tech/1554171817/");
return 0;
}
333デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/03(金) 03:22:53.97ID:l9gwftmb0 文字列を消しても実態が消えないのでは
334デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/03(金) 07:52:51.95ID:EnpL9vkxM Cできるけどアセンブラできない、
ってのはCもできないってことだ。
ってのはCもできないってことだ。
335デフォルトの名無しさん (ワッチョイ 06d2-R0y6)
2019/05/03(金) 09:31:51.08ID:Adh7HeMA0 アセンブラからCに行ったらアセンブラでやってたアルゴリズムがCで表現できなく、非常にもどかしくて・・・
>>335
それは初耳、いや、どういうのに手こずったのか参考に教えていただけませんか?
それは初耳、いや、どういうのに手こずったのか参考に教えていただけませんか?
337デフォルトの名無しさん (ワッチョイ cb02-R0y6)
2019/05/03(金) 17:51:44.54ID:VHrwonhY0 出来る出来ないっていう話なら、基本Cできるんじゃないかな。
CPU固有のブルック転送命令とかそんなのを除いて。
(それすら別にできるけどね。)
1命令でできてたことがめんどくさくなるってものならあるかも。
CPU固有のブルック転送命令とかそんなのを除いて。
(それすら別にできるけどね。)
1命令でできてたことがめんどくさくなるってものならあるかも。
338デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/03(金) 18:09:15.33ID:Mu7G7jjV0 アセンブラで作るにしてもでもアルゴリズムで実装しているならCでも出来るんじゃないの?
339デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/03(金) 18:10:41.96ID:3HjiUXGl0 プラットフォーム依存の問題は言語じゃなくてコンパイラより下が解決するわけでさ、それをできると言っていいならなんでもできると思うよ。
341デフォルトの名無しさん (ワッチョイ 4240-ahOC)
2019/05/03(金) 19:20:32.29ID:Qo5d3PXm0 >335
キャリーフラグが無くてオーバーフロー/アンダーフロー判定が面倒だとか、
ビットシフトはあってもローテーションが無いとか。
ジャンプ命令使うとパイプラインが初期化されるからなるべく使うなと聞いたのに
逆汗見たらジャンプしまくってるじゃないかとか。
8/16bit時代のアセンブラは1バイト、1ステート削って処理速度稼いでたんで
上記の差を補う処理が無駄に思えて・・・。
かといってインラインアセンブラ使うのはなんか違うと(インライン使うと最適化されないとも聞いてたし)。
それならアセンブラでCから呼べる関数書いた方がすっきりするとか。
20世紀時代のことだ。
キャリーフラグが無くてオーバーフロー/アンダーフロー判定が面倒だとか、
ビットシフトはあってもローテーションが無いとか。
ジャンプ命令使うとパイプラインが初期化されるからなるべく使うなと聞いたのに
逆汗見たらジャンプしまくってるじゃないかとか。
8/16bit時代のアセンブラは1バイト、1ステート削って処理速度稼いでたんで
上記の差を補う処理が無駄に思えて・・・。
かといってインラインアセンブラ使うのはなんか違うと(インライン使うと最適化されないとも聞いてたし)。
それならアセンブラでCから呼べる関数書いた方がすっきりするとか。
20世紀時代のことだ。
342デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 19:43:11.87ID:EWn4tN7a0 マシン語でコード書いてるときはオンレジスタ思考なのに
当時のCはデフォautoつまりオンメモリなので
ああ、やはりマシン語よりは速度が落ちる言語なんだな
コンパイラ言語とインタプリタ言語のような違いが
もう1つあるんだなって思っていた
当時のCはデフォautoつまりオンメモリなので
ああ、やはりマシン語よりは速度が落ちる言語なんだな
コンパイラ言語とインタプリタ言語のような違いが
もう1つあるんだなって思っていた
343デフォルトの名無しさん (ワッチョイ d701-LHRJ)
2019/05/03(金) 20:21:30.59ID:B4eLqFJ00 スパゲッティなものを書いてるならともかく、真っ当にサブルーチン化してたら必要悪としてレジスタ志向は早々に諦めてたわ。
局所的に最適化するならそれは別問題として解決してた。
局所的に最適化するならそれは別問題として解決してた。
344デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 20:27:04.09ID:EWn4tN7a0 構造化なんか眼中になかったね
速度こそ純粋で美しい法律だった
速度こそ純粋で美しい法律だった
345デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/03(金) 20:31:26.00ID:4Ii/FXBd0346デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 20:52:43.47ID:EWn4tN7a0 PC9801のVRAMを1ドットスクロールさせるのなんか
キャリー使って書いてたのをキャリーなしで書き直させられるのは悲しかった
キャリー使って書いてたのをキャリーなしで書き直させられるのは悲しかった
348デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/03(金) 22:27:22.12ID:4Ii/FXBd0 >>347
そのアルゴリズムにキャリーフラグなんて出てこないでしょ?
そのアルゴリズムにキャリーフラグなんて出てこないでしょ?
349デフォルトの名無しさん (ワッチョイ 422f-ahOC)
2019/05/03(金) 22:32:04.75ID:EWn4tN7a0 アルゴリズムという特定ワードに囚われて用語の定義の話に逸れていくつまらん展開だ
350デフォルトの名無しさん (ワッチョイ cb5f-zb9T)
2019/05/04(土) 04:19:37.51ID:qzgt3pmZ0 文字列入力を受け付けて、それをstrという変数に代入する…というプログラムを書きたいのですが、知りたいことがあって以下のような条件を課させていただきます。
・for文を使い、その中でscanf(“%c”,str[i])により1文字ずつ文字をstrの各配列に格納していくこと
・文字数は最大50文字までとし、たとえば「abcd」などのように4文字であった場合も、abcdと入力→Enterが押された時点で、その文字列をstrに代入して、その4文字を表示して完了とする
・if文を使ってそれを実現すること
#include<stdio.h>
int main(void){
int i,str[50];
for(i=0;i<50;i++){ //入力処理
scanf(“%c”,str[i]);
}
for(i=0;i<50;i++){ //出力
printf(“%c”,str[i]);
}
}
このコードだと、「abcd」と入力してEnterを押しただけでは、出力されません。(50文字入力されるまで入力受け付け状態から遷移しない)
どのように改良すればよいでしょうか?
・for文を使い、その中でscanf(“%c”,str[i])により1文字ずつ文字をstrの各配列に格納していくこと
・文字数は最大50文字までとし、たとえば「abcd」などのように4文字であった場合も、abcdと入力→Enterが押された時点で、その文字列をstrに代入して、その4文字を表示して完了とする
・if文を使ってそれを実現すること
#include<stdio.h>
int main(void){
int i,str[50];
for(i=0;i<50;i++){ //入力処理
scanf(“%c”,str[i]);
}
for(i=0;i<50;i++){ //出力
printf(“%c”,str[i]);
}
}
このコードだと、「abcd」と入力してEnterを押しただけでは、出力されません。(50文字入力されるまで入力受け付け状態から遷移しない)
どのように改良すればよいでしょうか?
351デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/04(土) 05:12:15.70ID:Yh80Q70x0 入力される度に文字のチェックしてみれば。
352デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/04(土) 05:15:36.04ID:eVIwB2YR0 >>350
宿題は自分でやれ
宿題は自分でやれ
353デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/04(土) 05:21:50.50ID:I31OC90J0 何故誰もscanf("%c", str[i])に突っ込まないのか
354デフォルトの名無しさん (ワッチョイ 177b-VjZg)
2019/05/04(土) 05:39:39.99ID:RAMEL17i0355354 (ワッチョイ 177b-VjZg)
2019/05/04(土) 10:20:54.58ID:RAMEL17i0357デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/04(土) 11:41:09.49ID:yT0QTmUja >>350
もし宿題が本当に scanf(“%c”,str[i]) と書いてある場合は先生が間違えてるので「 scanf(“%c”, &str[i]) ですよね?」とツッコミを入れてみると良い。
そうすると君はできる学生と思われて成績が上がるるか、または気に入らんやつと思われて成績が下がると思う。
もし宿題が本当に scanf(“%c”,str[i]) と書いてある場合は先生が間違えてるので「 scanf(“%c”, &str[i]) ですよね?」とツッコミを入れてみると良い。
そうすると君はできる学生と思われて成績が上がるるか、または気に入らんやつと思われて成績が下がると思う。
358デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/04(土) 13:40:22.89ID:tOD9kuurM そういえば東大では今でも
C言語が必修なのか?
まじ時代遅れの馬鹿だと思ってたら、
Cしかできない在日の馬鹿教員が
いるのだとか
C言語が必修なのか?
まじ時代遅れの馬鹿だと思ってたら、
Cしかできない在日の馬鹿教員が
いるのだとか
359デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/04(土) 13:51:43.16ID:k+B84EwL0 学歴コンプレックスの人?
360デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/04(土) 14:16:41.02ID:vXlxEQ1E0 参照型とか出てくるのにそもそも参照がなにかも理解出来てないにわかオブジェクト指向が増えるよりよっぽどマシよ
なんの言語とは言わないけども
C言語なら理解しなければ先に進まないから
なんの言語とは言わないけども
C言語なら理解しなければ先に進まないから
>>358
C が分からないようでは話にならないのでは?
C が分からないようでは話にならないのでは?
362デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/04(土) 14:47:16.31ID:tOD9kuurM >>362
それは多分ありえない話でしょうね、なぜならば C は計算機言語の基本で、各種書籍ではアルゴリズムの記述に C を使うものが大半ですから
本も読めない人がトヨタの研究者とか、あなたの空想の話なのでは?
それは多分ありえない話でしょうね、なぜならば C は計算機言語の基本で、各種書籍ではアルゴリズムの記述に C を使うものが大半ですから
本も読めない人がトヨタの研究者とか、あなたの空想の話なのでは?
364デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/04(土) 15:22:49.59ID:Yh80Q70x0 アルゴリズムの勉強はpythonがいいよ
>>364
python で二分木の実装とかできますか?
python で二分木の実装とかできますか?
366デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/04(土) 16:05:03.07ID:Yh80Q70x0 >>365
できますん
できますん
367デフォルトの名無しさん (トンモー MM93-qoXq)
2019/05/04(土) 16:07:19.80ID:LvYM7SOrM >>365
そんなのはFランの仕事でしょ?
そんなのはFランの仕事でしょ?
368デフォルトの名無しさん (ワッチョイ bb87-ahOC)
2019/05/04(土) 16:13:20.77ID:8Q7/PMC20 論文の次はFランか、哀れだなw
369デフォルトの名無しさん (ワッチョイ 6752-ahOC)
2019/05/04(土) 16:49:12.48ID:vXlxEQ1E0 やっぱり相当コンプレックスの塊で頭悪いんだろうなぁ
>>366
本当ですか?ポインタがない python では無理なんじゃないですか!?
本当ですか?ポインタがない python では無理なんじゃないですか!?
371デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/04(土) 18:39:36.30ID:yT0QTmUja pythonって参照ないの?
372デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 18:43:01.66ID:gINSNBZZa 真面目に言うとpythonは基本的に全部参照渡しだね。
参照したものを直接いじれるかというとそうでない場合があるけども。
参照したものを直接いじれるかというとそうでない場合があるけども。
374はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/04(土) 19:18:51.61ID:21Of2ELD0 >>370
Python に限らず動的型の言語の多くは変数に値を入れるんじゃなくて、
オブジェクトと変数の間に束縛 (bind) を作ることで成り立ってる。
辿ることでオブジェクトを参照するんだ。 実質的にポインタだよ。 むしろポインタしかない。
(小さい値 (小さい数値とか文字とか) はアロケーションを抑制するためにそのまま
ワードに突っ込むような最適化をする言語 (処理系) もあるけども。)
Python に限らず動的型の言語の多くは変数に値を入れるんじゃなくて、
オブジェクトと変数の間に束縛 (bind) を作ることで成り立ってる。
辿ることでオブジェクトを参照するんだ。 実質的にポインタだよ。 むしろポインタしかない。
(小さい値 (小さい数値とか文字とか) はアロケーションを抑制するためにそのまま
ワードに突っ込むような最適化をする言語 (処理系) もあるけども。)
>>374
Java ならば boxing でヒープにとる値とスタックに取る値とをある程度(意識せずに)変換できますね(そういう C/C++ like な意識が皆無ではない、という意味)
ただし、二分木に関してはいいたいことがまだあって、「本物の」二分木は二重ポインタ(ポインタのポインタ)が必要なのではないか?と思っています
さすがに Java には二重ポインタはない、そんな用途の言語じゃない
Python や ruby にはあるのでしょうか?
Java ならば boxing でヒープにとる値とスタックに取る値とをある程度(意識せずに)変換できますね(そういう C/C++ like な意識が皆無ではない、という意味)
ただし、二分木に関してはいいたいことがまだあって、「本物の」二分木は二重ポインタ(ポインタのポインタ)が必要なのではないか?と思っています
さすがに Java には二重ポインタはない、そんな用途の言語じゃない
Python や ruby にはあるのでしょうか?
376デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 20:55:58.63ID:cZ5M6KFWa 二重ポインタを何に使う?
Cだと引数でノードのオブジェクトを返す辺りか?
Cだと引数でノードのオブジェクトを返す辺りか?
>>376
ノードを追加する関数add の引数を
add(&root, Object)
ってするでしょ?&root ってことは、struct *node のアドレス、すなわち struct node ** が必要なのではないかと
ノードを追加する関数add の引数を
add(&root, Object)
ってするでしょ?&root ってことは、struct *node のアドレス、すなわち struct node ** が必要なのではないかと
378デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 21:43:09.25ID:cZ5M6KFWa >>377
わからんが、Cでも戻り値でポインタを返せばいいんじゃないか?
わからんが、Cでも戻り値でポインタを返せばいいんじゃないか?
379はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/04(土) 21:46:08.02ID:21Of2ELD0 >>375
参照を持つオブジェクトへの参照を持てるんだから、事実上の二重ポインタとして使えるよ。
参照を持つオブジェクトへの参照を持てるんだから、事実上の二重ポインタとして使えるよ。
380デフォルトの名無しさん (ワッチョイ bb87-ahOC)
2019/05/04(土) 21:57:52.42ID:8Q7/PMC20 二重までは使うんだよなあ
三重をなぜ使わないか、説明できるか?w
三重をなぜ使わないか、説明できるか?w
381デフォルトの名無しさん (ワッチョイ d701-o1CB)
2019/05/04(土) 22:09:57.55ID:RtDHzLy60 ガベージコレクションと裸のポインタって相性が悪いような
382デフォルトの名無しさん (ワッチョイ e201-VrjD)
2019/05/04(土) 22:15:35.23ID:eVIwB2YR0 >>378
2個返したい時とか、戻り値は成功かどうかのコードを返したいとか
2個返したい時とか、戻り値は成功かどうかのコードを返したいとか
383デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/04(土) 23:07:46.23ID:cZ5M6KFWa 道はいろいろあると思うが、せっかくあるんだから構造体使って皆くるんじゃえと思うよ。
384デフォルトの名無しさん (アウアウウー Sabb-vI8p)
2019/05/05(日) 00:20:41.66ID:nwgMKC8Ra 微妙にスレチのように思うので続きはJava初心者のスレでやった方が良いのではないか?
まあ人に聞かなくても Java を勉強して Java の API のソースを読めばそういうのをどうしているのかは何れわかると思うけどね。
まあ人に聞かなくても Java を勉強して Java の API のソースを読めばそういうのをどうしているのかは何れわかると思うけどね。
385デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/05(日) 00:21:53.66ID:tvdtPjB+0 Ruby での、Jaggy 配列は、
ary = [ ] # 配列の配列
ary.push [ "a" ]
ary.push [ 1, 2 ]
p ary #=> [["a"], [1, 2]]
C/C++ 以外のたいていの言語では、数字などのprimitive 以外は、すべて参照。
(primitiveは参照にするよりも、その場所へ値を埋め込んだ方が速い)
外側の配列は、内側の配列の参照を持っている。
内側の配列は、(primitive以外の)各要素の参照を持っている
primitive以外は、コピーしても参照がコピーされるだけで、値はコピーされない。
つまり、同一インスタンスを指す。
別のインスタンスは作られない
new されていなければ、インスタンスは作られない。
代入しただけでは、参照がコピーされるだけ
これを、shallow copy (浅いコピー)と呼ぶ(同一インスタンス)。
new して、別のインスタンスを作ることを、deep copy (深いコピー)と呼ぶ(別のインスタンス)
ary = [ ] # 配列の配列
ary.push [ "a" ]
ary.push [ 1, 2 ]
p ary #=> [["a"], [1, 2]]
C/C++ 以外のたいていの言語では、数字などのprimitive 以外は、すべて参照。
(primitiveは参照にするよりも、その場所へ値を埋め込んだ方が速い)
外側の配列は、内側の配列の参照を持っている。
内側の配列は、(primitive以外の)各要素の参照を持っている
primitive以外は、コピーしても参照がコピーされるだけで、値はコピーされない。
つまり、同一インスタンスを指す。
別のインスタンスは作られない
new されていなければ、インスタンスは作られない。
代入しただけでは、参照がコピーされるだけ
これを、shallow copy (浅いコピー)と呼ぶ(同一インスタンス)。
new して、別のインスタンスを作ることを、deep copy (深いコピー)と呼ぶ(別のインスタンス)
386デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/05(日) 00:37:14.86ID:RPhfdkos0 >>385
馬鹿は消えろ
馬鹿は消えろ
>>378
それは無駄な代入が発生するでしょう?
それは無駄な代入が発生するでしょう?
>>380
余裕で三重ポインタなどほいほいと使いますよ
https://mevius.5ch.net/test/read.cgi/tech/1434079972/26
void prep_exe(char *sttp, char **path, char ***argv)
char **argv を使うことが理解できるのだったら「argv のアドレスを渡す」みたいな場合に渡された関数側では三重ポインタを使うことになるでしょう
余裕で三重ポインタなどほいほいと使いますよ
https://mevius.5ch.net/test/read.cgi/tech/1434079972/26
void prep_exe(char *sttp, char **path, char ***argv)
char **argv を使うことが理解できるのだったら「argv のアドレスを渡す」みたいな場合に渡された関数側では三重ポインタを使うことになるでしょう
389デフォルトの名無しさん (ワッチョイ 9b6d-ahOC)
2019/05/05(日) 09:04:36.94ID:hoO1o10+0 >>388
それcodepadだろ? 使いさえすればいいって話じゃなくて
それcodepadだろ? 使いさえすればいいって話じゃなくて
>>389
無論使いさえすればいい、というわけではなく、この例では小さなシェルを実装しており、シェルのパイプ機能を実装するのに三重ポインタを使ったのです
無論使いさえすればいい、というわけではなく、この例では小さなシェルを実装しており、シェルのパイプ機能を実装するのに三重ポインタを使ったのです
391デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 09:21:39.41ID:2T/oydys0 >>387
引数を介すと代入が減るってこと?
引数を介すと代入が減るってこと?
393デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 10:05:07.93ID:bV6goPu10 呼び出しの前後で、ptrの値が 同じかもしれない、場合よっては変わるかもしれない関数
ptr = func1(ptr, opt); と func2(&ptr, opt);
うーんどっちも使うな…
ptr = func1(ptr, opt); と func2(&ptr, opt);
うーんどっちも使うな…
394デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:28:11.80ID:2T/oydys0 >>392
じゃあ、一時変数に代入しとけば?
じゃあ、一時変数に代入しとけば?
>>394
シンプルな記述ができるのに、わざと複雑な書き方にするのは問題なのでは?
シンプルな記述ができるのに、わざと複雑な書き方にするのは問題なのでは?
397デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:32:32.58ID:2T/oydys0399デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 10:35:01.06ID:bV6goPu10 エラー伝達に NULL を使う realloc は即代入するとお漏らししちゃうし
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
