!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:SQXqRaAc0348デフォルトの名無しさん (ワッチョイ 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 は即代入するとお漏らししちゃうし
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問
あれ、なん引数書き戻しにしなかったんだろう? 素朴な疑問
400デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:35:57.12ID:2T/oydys0 >>398
代入されているのかされていないのか、わからない方が良いってこと?
代入されているのかされていないのか、わからない方が良いってこと?
401デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 10:36:08.55ID:bV6goPu10 ×あれ、なん引数書き戻しに
○あれ、なんで引数書き戻しに
○あれ、なんで引数書き戻しに
402デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 10:41:29.60ID:2T/oydys0404デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:31:24.71ID:2T/oydys0 >>403
だから、関数の内部的に何してるのかわからんのが良いってことじゃない?
だから、関数の内部的に何してるのかわからんのが良いってことじゃない?
406デフォルトの名無しさん (スプッッ Sd22-ph/v)
2019/05/05(日) 11:38:01.66ID:orE8GGyod >>406
非常に大きな二分木(ノートが1億個)があって、そのはるか先端で malloc() してそこで代入すればいいだけなのに、
その先端から root に戻ってくる途中の30箇所ほどで、軒並み全部のノードで「必要のない無駄な代入」をするのですか?
>それしか使えない場面でのみ使うべき
この二分木を実装する、というのがまさしく「それしか使えない場面」なのですよ
非常に大きな二分木(ノートが1億個)があって、そのはるか先端で malloc() してそこで代入すればいいだけなのに、
その先端から root に戻ってくる途中の30箇所ほどで、軒並み全部のノードで「必要のない無駄な代入」をするのですか?
>それしか使えない場面でのみ使うべき
この二分木を実装する、というのがまさしく「それしか使えない場面」なのですよ
408デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:45:42.03ID:2T/oydys0 >>405
つまり、後者でmallocしてnullが返った時はそれを代入するってことですか?同じじゃん。
つまり、後者でmallocしてnullが返った時はそれを代入するってことですか?同じじゃん。
409デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:47:06.67ID:2T/oydys0412デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:57:28.30ID:2T/oydys0413デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 11:58:36.27ID:2T/oydys0 >>411
代入回数比較してよ。頼むよ。
代入回数比較してよ。頼むよ。
>>412
ちがいますね
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@、にかかっています。
>>413
>>407 に書いておきました、1億ノードの二分木にて各ノードが最適に配置されているとして、削ることのできる代入は malloc() 一回に対して 30 個の代入になります
>>393 ptr = func1(ptr, opt); では 1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
代入のコストは大したことがない、にしても、アルゴリズムを正確に記述できないのは問題ですね
洗練された記述とはそういうものではないでしょうか
ちがいますね
問題は、malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@、にかかっています。
>>413
>>407 に書いておきました、1億ノードの二分木にて各ノードが最適に配置されているとして、削ることのできる代入は malloc() 一回に対して 30 個の代入になります
>>393 ptr = func1(ptr, opt); では 1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
代入のコストは大したことがない、にしても、アルゴリズムを正確に記述できないのは問題ですね
洗練された記述とはそういうものではないでしょうか
415デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 12:48:51.19ID:2T/oydys0416デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 12:52:54.83ID:2T/oydys0 仕事では戻り値に成功失敗が入ってオブジェクトのポインタは引数に来るような関数は使うけどさ、
結局どっちもチェックするよ。信じられねえもんな。
結局どっちもチェックするよ。信じられねえもんな。
>>415
malloc() が成功したか失敗したかは、今の話には関係ありません
今関係があるのは、
malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@
です
malloc() が成功したか失敗したかは、今の話には関係ありません
今関係があるのは、
malloc() したときだけ代入し、malloc() しなかったときには代入しない、という記述を正確にかけるかどうか…@
です
418デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 13:42:25.11ID:2T/oydys0420デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 13:55:35.88ID:2T/oydys0 >>419
戻り値はvoidってこと?
戻り値はvoidってこと?
422デフォルトの名無しさん (ワッチョイ 7fe9-3iRC)
2019/05/05(日) 14:08:06.37ID:2T/oydys0 >>421
いや、必須なのでは?
いや、必須なのでは?
424デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 14:33:08.37ID:bV6goPu10 異常は戻りをNULLにするパティーンで
node_t *func3(node_t**, ...)
正常だった場合に ptr = func3(&ptr, opt); と書けるしw (無駄な努力の可能性
node_t *func3(node_t**, ...)
正常だった場合に ptr = func3(&ptr, opt); と書けるしw (無駄な努力の可能性
425デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 14:34:34.27ID:bV6goPu10 って書いたけど鼻から悪魔踏みそうな嫌らしさがあるな…
>>424
そのパターンでは、異常値 NULL をうっかりノードに登録してしまうと、そのノードより下が浮いてしまい危ないですね、ま、異常系をミスったままリリースしてしまうことも私はよくやりますけど
そのパターンでは、異常値 NULL をうっかりノードに登録してしまうと、そのノードより下が浮いてしまい危ないですね、ま、異常系をミスったままリリースしてしまうことも私はよくやりますけど
427デフォルトの名無しさん (アウアウカー Sa47-3iRC)
2019/05/05(日) 15:42:24.13ID:8x8syc+Fa >>423
いや、必須でしょ?代入消せるんだから。消さないと。
いや、必須でしょ?代入消せるんだから。消さないと。
429デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 18:13:23.13ID:bV6goPu10 423の文意は
「void が必須なわけではなく
引数と同じ型のポインタを戻すことはせずに、別の目的の何か、たとえばエラーコードとして int を戻す
なんてのはアリでしょ?」
ってことだと思うけど
「void が必須なわけではなく
引数と同じ型のポインタを戻すことはせずに、別の目的の何か、たとえばエラーコードとして int を戻す
なんてのはアリでしょ?」
ってことだと思うけど
430デフォルトの名無しさん (アウアウエー Sa3a-3iRC)
2019/05/05(日) 18:42:49.42ID:dOx23ziba returnしちゃだめでしょ
代入が駄目ってくらいだから
代入が駄目ってくらいだから
431デフォルトの名無しさん (ワッチョイ f701-EPtf)
2019/05/05(日) 18:56:43.02ID:bV6goPu10 「代入不要なケースでも代入記述を要求するのはよろしくない」スタイルの延長だと
戻り値評価も破棄可能ならそうすべき って話か
戻り値評価も破棄可能ならそうすべき って話か
434はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 19:13:46.27ID:TxpPZKKr0 あ、ごめん、ミスって文章を書く前に投稿してもうた。
>>407
あらためて確認するが、この代入を「無駄」としているのはアルゴリズムの表現の上では不要なことをしているという
意味の上での無駄であって、性能上の無駄という意味ではないんだね?
そして、アルゴリズムを正しく表現する上では (ときには二重・三重のも含めて) ポインタが必要だと。
>>407
あらためて確認するが、この代入を「無駄」としているのはアルゴリズムの表現の上では不要なことをしているという
意味の上での無駄であって、性能上の無駄という意味ではないんだね?
そして、アルゴリズムを正しく表現する上では (ときには二重・三重のも含めて) ポインタが必要だと。
>>434
>性能上の無駄という意味ではないんだね?
性能の上で分析するとなると、間接参照にてデータをロード、ストアするコストと値をストアするコストを天秤にかける、ことになりますね
なるほど、その点を言いたくて、でも言いたくなくて、しつこく絡んでいたのですか…
私は二重ポインタでの表現の方がトータルでお得だ、とは思ってはいますが、これまで表に出ている私の発言は、あえてそこには踏み込まず(だって性能の話はうかつに断言できませんからね…)、
おっしゃるとおり「アルゴリズムの表現の上では不要なことをしている」に留まっています
>性能上の無駄という意味ではないんだね?
性能の上で分析するとなると、間接参照にてデータをロード、ストアするコストと値をストアするコストを天秤にかける、ことになりますね
なるほど、その点を言いたくて、でも言いたくなくて、しつこく絡んでいたのですか…
私は二重ポインタでの表現の方がトータルでお得だ、とは思ってはいますが、これまで表に出ている私の発言は、あえてそこには踏み込まず(だって性能の話はうかつに断言できませんからね…)、
おっしゃるとおり「アルゴリズムの表現の上では不要なことをしている」に留まっています
436はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 20:57:45.43ID:TxpPZKKr0 >>435
たとえば数学上の表記なら「A=1 であり B=1 のとき A=B は真である」と「1=1 は真である」には何も差が無い。
途中で名前を付けるのは人間に対する便宜であって、無駄な「操作」は存在しない。
代入が無駄たりうるのは C のパラダイムだからなので、
「C で表現するにはポインタが必要だし、代入では不適当だ」は事実であっても
「ポインタが無い言語では表現できない」というわけではないよ。
C の低級な世界でまともな意味論を表現しようとするのがそもそもの間違いだろう。
たとえば数学上の表記なら「A=1 であり B=1 のとき A=B は真である」と「1=1 は真である」には何も差が無い。
途中で名前を付けるのは人間に対する便宜であって、無駄な「操作」は存在しない。
代入が無駄たりうるのは C のパラダイムだからなので、
「C で表現するにはポインタが必要だし、代入では不適当だ」は事実であっても
「ポインタが無い言語では表現できない」というわけではないよ。
C の低級な世界でまともな意味論を表現しようとするのがそもそもの間違いだろう。
>>436
>「ポインタが無い言語では表現できない」というわけではないよ。
それは理解しています、なぜなら
Java での二分木の実装を検討したことがある(探せば2ch過去ログにあるかもしれません)
Java にはポインタはありませんが、実装できるかできないか、といえば「できる」の方に入りますね
>「ポインタが無い言語では表現できない」というわけではないよ。
それは理解しています、なぜなら
Java での二分木の実装を検討したことがある(探せば2ch過去ログにあるかもしれません)
Java にはポインタはありませんが、実装できるかできないか、といえば「できる」の方に入りますね
438はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 21:54:26.85ID:TxpPZKKr0439デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:34:40.25ID:RXFRr1FQ0 C言語のプログラム内で確保していいメモリってユーザー空間の仮想メモリ上限いっぱいまで取っていいの?
複数の変数a, b, c, ・・・の値を表示するだけのプログラムを時系列に並べて考えてみるんだけど
0. 実行ファイルを起動する
1. 32bitプロセスが生成される ←たとえば32bit windowsだとユーザー空間とカーネル空間で計4GBの仮想メモリが確保される
2. int a; ←仮想メモリ(1で確保されたユーザー空間)上にaが確保される
int b; ←上に類似
int c; ←上に類似
・・・・・(複数の変数の宣言やprintf関数が続く)
こんな感じなんだろうけど
上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
複数の変数a, b, c, ・・・の値を表示するだけのプログラムを時系列に並べて考えてみるんだけど
0. 実行ファイルを起動する
1. 32bitプロセスが生成される ←たとえば32bit windowsだとユーザー空間とカーネル空間で計4GBの仮想メモリが確保される
2. int a; ←仮想メモリ(1で確保されたユーザー空間)上にaが確保される
int b; ←上に類似
int c; ←上に類似
・・・・・(複数の変数の宣言やprintf関数が続く)
こんな感じなんだろうけど
上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
440はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4e3e-Cg3z)
2019/05/05(日) 23:38:14.20ID:TxpPZKKr0 >>439
いいけど、もっと効率的な方法があるならそれに越したことは無いっていうそれだけの話
いいけど、もっと効率的な方法があるならそれに越したことは無いっていうそれだけの話
441デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:41:29.98ID:RXFRr1FQ0 簡潔に書くと
安全のためにはどこまでメモリを使っていいの?
そのメモリの大きさはユーザー空間の上限と同じなの?
という室問なのに長くなってしまた
安全のためにはどこまでメモリを使っていいの?
そのメモリの大きさはユーザー空間の上限と同じなの?
という室問なのに長くなってしまた
442デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:47:50.76ID:RXFRr1FQ0 >>440
ありがとう
ただ初心者なので効率性を目指すにはきつい部分が出てくる
そうなるとメモリの残量を監視する、つまり残量の値を取得する必要があるわけだけど
これは一般的にはwindowsのAPIを使うのが普通なの?
(そんなものがあるのかは知らない)
ありがとう
ただ初心者なので効率性を目指すにはきつい部分が出てくる
そうなるとメモリの残量を監視する、つまり残量の値を取得する必要があるわけだけど
これは一般的にはwindowsのAPIを使うのが普通なの?
(そんなものがあるのかは知らない)
443デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/05(日) 23:52:54.47ID:RPhfdkos0 >>442
スタックとヒープという概念は知ってる?知らなければまずそれを調べてみて。
それと、初心者なら効率を求める前に正しくメモリ管理を扱えるようになる必要があるが、その時点で残量は気にする必要はないぞ。
スタックとヒープという概念は知ってる?知らなければまずそれを調べてみて。
それと、初心者なら効率を求める前に正しくメモリ管理を扱えるようになる必要があるが、その時点で残量は気にする必要はないぞ。
444デフォルトの名無しさん (ワッチョイ 2f05-S4IJ)
2019/05/05(日) 23:59:16.82ID:RXFRr1FQ0 FIFOだとかナントカ程度にしか。
「〜〜領域」という幾つかの用語がOSとかの環境が違っても
全く共通のものなのかよく分からないから正直スルーしてる
「〜〜領域」という幾つかの用語がOSとかの環境が違っても
全く共通のものなのかよく分からないから正直スルーしてる
445デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/06(月) 05:38:27.60ID:wr9bFPpT0 >>414
>1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
2^10 = 約1,000 千
2^20 = 約1,000,000 百万
2^30 = 約1,000,000,000 十億
>>441
Java VM の初期値は、256MB とか。
それよりも大きいと強制終了されるが、起動時に、512MBに設定できる
たぶん、4GB の仮想メモリでも、ユーザー空間3GB・カーネル空間1GBぐらいだろ
それ以上のデータは、動画みたいにstream になる。
バッファサイズ、例えば、1MB を読んでは捨てて、次の1MB読んでは捨てて、の繰り返し
読み込んだデータを使ったら、すぐに捨てないといけない。
ユーザー空間に、空きを作らないといけない
>1億ノードの二分木にノードを追加する際、30個の無駄な代入が発生します
2^10 = 約1,000 千
2^20 = 約1,000,000 百万
2^30 = 約1,000,000,000 十億
>>441
Java VM の初期値は、256MB とか。
それよりも大きいと強制終了されるが、起動時に、512MBに設定できる
たぶん、4GB の仮想メモリでも、ユーザー空間3GB・カーネル空間1GBぐらいだろ
それ以上のデータは、動画みたいにstream になる。
バッファサイズ、例えば、1MB を読んでは捨てて、次の1MB読んでは捨てて、の繰り返し
読み込んだデータを使ったら、すぐに捨てないといけない。
ユーザー空間に、空きを作らないといけない
446デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/06(月) 06:20:53.21ID:Geq8Gq1G0 >>445
いつものRubyバカだろ。いい加減な知識でC言語のメモリの話題に口を挟むのはやめろ。この板になれている者からすれば「またいつものか...」ですむが、初心者にとっては害悪でしかないから消えろ。
いつものRubyバカだろ。いい加減な知識でC言語のメモリの話題に口を挟むのはやめろ。この板になれている者からすれば「またいつものか...」ですむが、初心者にとっては害悪でしかないから消えろ。
447デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/06(月) 06:25:32.64ID:Geq8Gq1G0 >>444
組み込みとかの特殊な環境では例外もあるけど、基本的には環境によらずC言語で必須の概念だからスルーせずにちゃんと調べるべき。
組み込みとかの特殊な環境では例外もあるけど、基本的には環境によらずC言語で必須の概念だからスルーせずにちゃんと調べるべき。
448デフォルトの名無しさん (ワッチョイ 06d2-R0y6)
2019/05/06(月) 08:39:59.60ID:s1ulBxFy0 >439
>上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
他のプロセスがスワップ起こして重くなるから止めろって言いたい。
>上記の2でユーザー空間いっぱいになるまで変数を宣言してもいいの?
他のプロセスがスワップ起こして重くなるから止めろって言いたい。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- WBC世界バンタム級王座決定戦 井上拓真が3-0の判定勝利で世界王座に返り咲き! 無敗の那須川天心に初黒星つけ完全復活!★2 [牛丼★]
- 【速報】盗難車ひき逃げで歩行者ら12人死傷 逃走した“運転手”の37歳男を逮捕 東京・足立区 ★4 [Ailuropoda melanoleuca★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も [ぐれ★]
- 【時事解説】日米安保条約で「アメリカには日本防衛の義務がある」という誤解 [1ゲットロボ★]
- 人生初黒星の神童、那須川天心がリング上で土下座 [牛丼★]
- 【サッカー】日本代表MF中村敬斗が悲痛な叫び!クラブ敷地内に無断侵入!抱きつかれて頭が真っ白に [久太郎★]
- まったりおじゃる丸待機スレ🏡
- 【高市悲報】西日本人「ワイら、何もしてないのに北日本人から嫌われている……」 [762037879]
- 【速報】高市「アタシぜっったい謝らないからッ!!」→中国焦る [308389511]
- 【動画】日本人FPSゲーマー、お互いに責任をなすりつけあって大喧嘩wwwwwwwwwwwwww [834922174]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ166
- 【悲報】お前らがやってる白髪対策教えてくれ🥺 [616817505]
