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


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

C言語なら俺に聞け 147



1 名前:デフォルトの名無しさん [2018/08/16(木) 23:36:02.22 ID:fOCSKLtw.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/


C言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/

492 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 17:46:03.47 ID:zd32/hlD.net]
コード保守でのバグはこうやって生まれる
うっかりミスの見事な事例がまさかこのスレで見られるとは思ってなかった

493 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:00:04.35 ID:yggGxXGy.net]
>>484
コードを出しゃ良いってもんじゃない
自分の劣化コピーのせいで動かないコードに対して
今回だけでもこれだけ書いてるから

>>451,458,465,468,470,472,476

494 名前:デフォルトの名無しさん [2018/08/25(土) 18:02:07.86 ID:0r5h6/lL.net]
2ちゃんねるでしか自己主張できない低学歴知恵遅れが
なんか必死になってるわ

わかりやすいわ
ホント

495 名前:デフォルトの名無しさん [2018/08/25(土) 18:03:03.76 ID:0r5h6/lL.net]
つまりクソニートと
断定できる

496 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:06:11.05 ID:yggGxXGy.net]
>>442の1個目3個目は相手が悪かっただけ
としても
2個目は初心者用の課題に対して
初心者が普通に考えるよりはるかに悪いアルゴリズムを選んでおいて
「これを選ばないヤツは知恵遅れ」発言の連投だから

1個目も3個目も言ってることはコロコロ変わるし
「こうしないヤツはアホ」発言をして
自分で変えてるし

>>432も頭おかしいだろ

497 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:13:06.50 ID:zd32/hlD.net]
働いてはいないがニートと呼べるほど若くもない
早期退職で悠々自適生活の元組込みソフト開発者だよ

498 名前:デフォルトの名無しさん [2018/08/25(土) 19:03:57.78 ID:kfh++Yrt.net]
半角くんと長文くんのバトルを見てみたい

499 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:15:27.06 ID:06VRwQlu.net]
是非別スレでやって欲しい
スレ数はいくら使っても良いから

500 名前:デフォルトの名無しさん [2018/08/25(土) 19:18:01.37 ID:0r5h6/lL.net]
オマエなかなか分かってるわ
オレのレスも文字列的には長い
しかし、中身が濃いから、情報価値も高い
つまり価値が高い情報を継続して提供している

クソニートの長文は情報価値ゼロ
中身スカスカ
ただの落書き



501 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:20:58.01 ID:sh4ZcDkv.net]
>>493
フリがなかなか分かりにくいんだけど、そこ笑うとこ?

502 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:23:40.50 ID:06VRwQlu.net]
>>494
失笑なら

503 名前:デフォルトの名無しさん [2018/08/25(土) 19:25:27.77 ID:0r5h6/lL.net]
オレに敗北はない
このスレのクソニートにも敗北はない

ただコレには違いがある

オレは正面から戦う

クソニートは戦わない
コイツラは身をひそめながら遠くからとりあえず石投げる

この違い

504 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:28:15.91 ID:sh4ZcDkv.net]
>>496
ああ、ごめん。
一生懸命ネタ振ってたのね。でもネタフリにしてはあんまり面白くはないかな。
ただ俺はそんな一生懸命なお前嫌いじゃない(笑)

505 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 02:50:43.41 ID:5Jlr+RDR.net]
一日でこの板に少なくとも 23 回「低学歴知恵遅れ」って書いてるね。
どれだけ拗らせてるの?

506 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 03:24:56.95 ID:BwlGzYMc.net]
23/35=65.7%
うぷぷぷ

507 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:18:36.35 ID:aDjvXB/e.net]
職場で言われていることをここで

508 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 11:23:23.80 ID:0Dyu3Dip.net]
いやぁ、今どき職場で「低学歴知恵遅れ」なんて言ってくる上司がいたら
ネット掲示板で同じセリフを繰り返すより、録音して訴えるだろ。

それにしても、まるで署名のように必ず投稿文に盛り込むから、
何か隠された意図があるのでは、と深読みしてしまうのも事実。
単にクセになってて本人には意味の薄い間投詞になってるのかも知れんけど。


…読み取れないとガッカリなので一応書いておくけど、
「いくら匿名の電子掲示板でもそういう言葉遣いは良くないよ」と
たしなめている(忠告している、の方が受け入れやすいかな)つもり。

509 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 11:27:57.33 ID:aDjvXB/e.net]
それが当たっていると、訴えるのも恥ずかしいような

510 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 12:44:59.10 ID:d3emHXQQ.net]
>>501
純粋かよ



511 名前:デフォルトの名無しさん [2018/08/26(日) 14:53:35.15 ID:hANAm2gW.net]
低学歴底辺のクソニート、そして底辺ドカタなのは
図星なんでしょ

人間をホントのこといわれると
必死になる

512 名前:デフォルトの名無しさん [2018/08/26(日) 14:56:43.12 ID:hANAm2gW.net]
残念なことに
低学歴かどうかとか
知恵遅れかどうかとか
クソニートかどうか
底辺ドカタかどうか
レスからすぐに分かってしまう

まともに人間がみればすぐに分かる
キミラはなまとなに人間未満のゴミクズなワケ

その自覚すらない
だからまともな人間にすらなれないわけ

わかった?

513 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:10:55.42 ID:dQLVYknK.net]
必死なのはお前じゃん

514 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:12:25.06 ID:LX/My+gD.net]
半コテって一番タチ悪いな
コテハンつけろよNGにするから

515 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:25:44.03 ID:lAySnCDy.net]
本当は夏休み中の中高生じゃないのか?
何だか妙に精神年齢が幼く思える

516 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:27:03.18 ID:aDjvXB/e.net]
名前は半角カタカナで頼む

517 名前:デフォルトの名無しさん [2018/08/26(日) 16:29:48.93 ID:hANAm2gW.net]
図星でしっかり反応してるしな

やっぱりなこのスレは
駆除が必要な典型的な低学歴知恵遅れの
クソニートとか底辺ドカタしかいないわ

518 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 17:09:28.74 ID:BwlGzYMc.net]
小馬鹿にした発言が頭悪そうな最高に痛いやつ

519 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:07:37.48 ID:ujNq2aVI.net]
>>508
確かに夏休み始まった辺りから見かけるようになった気がする

520 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 06:20:27.93 ID:sdfxNc/O.net]
>>499
このスレだけなら 35 だが、この板全体の数なんだ。
必死チェッカーもどきを見たら堂々の 2 位で笑った。
いや、彼の御高説をもっと見たかったんだ。
ちなみに「知恵遅れ」はその 23 とは別に単独で 16 回出てきたよ。



521 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 08:24:49.48 ID:4HBkx10J.net]
自称、俺最強君()は、昔からしばしば見かけるけど。
小学生にも苦笑されそうなレスばかりで、相手をする気にならないんだよね。

hissi.org/read.php/tech/20180825/MHI1aDYvbEw.html
hissi.org/read.php/tech/20180826/aEFOQW0yZ1c.html

勝手に勝利宣言して逃亡するまで放置しておくのが吉。

522 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 08:45:35.65 ID:4ArgrBnx.net]
半角さんはこの板の唯一の良心
この板は腐ってる

523 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 11:56:02.39 ID:woJf6ZC9.net]
>>413
if (条件) {
 …
 …
 ここで(ブロックから)抜けたい -(1)
 … -(2)
} else { … }

こういうこと? (1) はさらに if で条件付で分岐しないと意味がないけど…
※ (1)で分岐しないかぎり (2) 以降が無意味のコードになる

if の外側を do { } while(0) で外を囲って break; したら?

524 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:18:18.46 ID:yF4/ft+h.net]
>>515
これだな

525 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:18:56.82 ID:yF4/ft+h.net]
おまえらはすぐにどうでもいいことに流される

526 名前:デフォルトの名無しさん [2018/08/27(月) 12:34:41.00 ID:ywsjsNTA.net]
>>516
それだったら2を実行するための何らかの条件がある筈なのでそのためのifブロックの中に2を入れればよい。
そつではなく無条件に2を実行したくないならばソースから削除するかコメントにでもすればよい。

527 名前:デフォルトの名無しさん [2018/08/27(月) 12:36:44.69 ID:ywsjsNTA.net]
すまん。スマホでフリック入力しててタイプミスした。

528 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:42:48.65 ID:woJf6ZC9.net]
>>519 意図は伝わったぜー
確かにw

if (条件1) {
 …
 if (条件2) { … -(1) } else { … -(2) }

529 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:48:15.12 ID:nj2QXsVo.net]
>>519
そりゃ方法なんていくらでもあるよ
そういう方法をとりたくないってことだろ
理由はしらんが

たとえば(-2)が大きくてインデントを変えたくないとか

530 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:50:40.87 ID:vY3QDx2y.net]
だから何でdo while(0)なんて変態コードに固執するんだよ



531 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:51:47.69 ID:YYT/vI56.net]
>>522
>>521の方法を思い付かなかった、or 妥当な書き方であると知らない、だけだは?

532 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:54:54.13 ID:woJf6ZC9.net]
元質問者に聞くしかない 「goto は使いたくない」の条件で

533 名前:デフォルトの名無しさん [2018/08/27(月) 12:59:44.74 ID:ywsjsNTA.net]
ブロックというものを中に入ったら出られないものと勘違いしているとか。
最初にforやwhileを覚えちゃって勘違いに繋がったとか。

534 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:22:18.19 ID:vY3QDx2y.net]
何人たりともforより先に関数のブロックを憶えるのにね
関数のブロックだけが何か特別なものと思い込んでるケースが多い

535 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:25:30.84 ID:Q5lEKL35.net]
goto 便利だけどなぁ。
break するがためのフラグ作って何ブロックも break するとか goto を避けるがためのいびつな if を連続させるとかよりよほど可読性が高い。
もちろん意味を的確に表したフラグやifの構造にできるに越したことはないけどさ。

536 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:28:07.17 ID:aXwyVMA/.net]
>>523
あえて固執して解決方法を編み出しておくと
ひょんなときに役立つことがあるしな
準備なんてのは9割無駄で当たり前だよね

537 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:31:18.13 ID:vY3QDx2y.net]
ジャクソン法やワーニエ法みたいに
データ構造とプログラム構造を一致させる構造化プログラミング()では
データが損傷していた場合にはプログラム構造を一致させることができない
よって構造化定理を諦めたアプローチをせざるを得ない
こういうのがgotoやlongjmpの出番

538 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:32:12.14 ID:vY3QDx2y.net]
>>529
その説明じゃ変態行為に固執する理由が説明できてないだろ
ええ加減にせんか、この変態!

539 名前:デフォルトの名無しさん [2018/08/27(月) 13:35:23.06 ID:ywsjsNTA.net]
ま、Cの場合は適切にgoto使った方が良いだろうな。後から作られた言語では break でラベル指定できるだの例外処理できるだのしてるから使わなくて済むようになってるわけで、それのないCはそれの代わりにgoto利用しちゃった方が分かりやすく書ける。

540 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 13:41:42.47 ID:vY3QDx2y.net]
いやCのgotoは制限がキツすぎて
いざという時には役立たず
だからlongjmpがある



541 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:22:47.97 ID:Q5lEKL35.net]
そんな制限キツかったっけ?
longjump の方がキツいでしょ

542 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:23:38.81 ID:vY3QDx2y.net]
何がキツいって関数から出らんない

543 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:34:05.72 ID:J1p6Vf0T.net]
setjump/longjumpは簡易タスクディスパッチャーをC言語だけで実現するためだけにあるのかと思ってたよ。
それ以外の用途はあんまり思い浮かばないなぁ。

544 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 14:40:44.92 ID:TsaU1TVW.net]
自分で対処不能なエラーが起きたときに、初期化してやり直す時に使ったな
だもんで通常の処理の流れで使うものだとは思わなかった

545 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:09:02.07 ID:vY3QDx2y.net]
ディスパッチャとしてはダメダメじゃん
jmp_buf jb;

void sig(int n)
{
longjmp(jb, 1);
}

int main(void)
{
signal(SIGINT, sig);
if (setjmp(jb) == 0) for (;;) ;
else puts("ok");
return 0;
}
俺んとこではokが出ない
おまいらんとこではどんな結果になる?

546 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:16:45.47 ID:J1p6Vf0T.net]
確かsignalとlongjmpは相性悪かったような?
よく覚えてないけど。

547 名前:デフォルトの名無しさん [2018/08/27(月) 16:27:43.33 ID:VuJs8kRo.net]
>>538
こちらは Linux (CentOS7)だが、出たよ。

548 名前:デフォルトの名無しさん [2018/08/27(月) 16:29:13.02 ID:VuJs8kRo.net]
>>539
sigsetjmp(), siglongjmp() ってのがあるので、そっち使った方が良さそうではあるな。

549 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 16:33:51.80 ID:J1p6Vf0T.net]
Linuxとかならpthreadがあるのでわざわざ自分でディスパッチャ作ることはないと思うけど、組み込み用に簡易的に作ることはあるかもね。

俺は組み込みならprotothreadsのほうがシンプルで好き。

550 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 17:20:53.65 ID:cJbIVPPr.net]
#include <signal.h>
void (*signal(int signum, void (*sighandler)(int signum)))(int signum);

この宣言が読めない



551 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 17:30:35.88 ID:vY3QDx2y.net]
signal 関数名
signum 第1仮引数名
sighandler 第2仮引数名

sighandler ポインタ
*sighandler 関数
signum 第1仮引数名

signalの返却値はsighandlerと同じ型

552 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 18:31:36.73 ID:C1HpzEi0.net]
>>524
思い浮かばないってのがなかなか考えられない
ていうか、
for/while/do while 以外もbreakで抜けられたら良いと思ったことが私もある


>>525
なぜgotoは使いたく無い?
という質問の答えも聞いておかないと
コーディング規約なのか宗教なのか
gotoの使い方を知らないだけなのか

553 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 18:49:30.60 ID:C1HpzEi0.net]
>>536
OSのタスク切り替え処理
ブートローダーからアプリケーションへのジャンプ
リセット
例外処理

554 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 19:22:28.99 ID:FN2jn8ES.net]
>>546
全て別の方法で実現しちゃうので、俺的にはlongjmpの必要性を感じないかな?

555 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 19:30:11.24 ID:m5aHtIH2.net]
>>530
高度すぎてなに言ってるかわからん

556 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 19:46:09.70 ID:nZJhjhuf.net]
まあデータの損傷をいきなりデータ構造そのものの破綻に結びつけるのは些か強引な論理展開ではあるな

557 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 19:55:16.65 ID:C1HpzEi0.net]
>>547
関数ポインタ
アセンブラ
スタック書き換え

このどれか?

558 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 20:08:36.09 ID:FN2jn8ES.net]
>>550
こんな感じ。

OSのタスク切り替え処理
→普通にOSの機能を使う、カーネルなしで簡易ディスパッチャ実装はpthread

ブートローダーからアプリケーションへのジャンプ
→アドレス固定ならアドレスを関数ポインタにキャストしてジャンプ、またはインラインアセンブラ

リセット
→周辺機能やbssやdataセクションも初期化したいのでWDT等のCPUリセット機能を使う

例外処理
→密結合を避けるためオーソドックスに返り値で判定、最後にgoto使うかも?

そういや例外処理longjmpで思い出したけど、一昔以上前のCマガジンにマクロでC++と同じようなtry〜catch構文実装方法の記事があったけど、確かにそのマクロ内ではsetjmp/longjmp使ってたわ。
マクロでカプセル化してれば例外処理で使うかも。

559 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 20:17:29.99 ID:C1HpzEi0.net]
カーネルなしでpthreadの意味がわからん

560 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 20:21:53.00 ID:FN2jn8ES.net]
>>552
あ、まちがえた。
pthreadじゃなくてprotothreadsね。



561 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 15:16:05.31 ID:wM2MhSxp.net]
techtipshoge.blogspot.com/2011/02/blog-post.html
このサイトで、書いてることは正しいと思うしし、実際こうなるんだけど、俺の頭悪いせいでわからない。

駄目な例のsetStr(a)の a は、 &a[0] という”アドレス”を渡してる訳ではないんでしょうか?
なんで駄目な例だと上手くいかないのかという理屈がわからない・・・

562 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 15:16:57.00 ID:wM2MhSxp.net]
あ、レスして気づいたけどcoutがあるってことはc++なのかな?
まあこれはprintfってことにしといてくださいw 重複質問になりそうなのでこちらで処理したい。

563 名前:さまよえる蟻人間 mailto:sage [2018/08/28(火) 15:27:14.25 ID:cEEOiaf2.net]
newもC++のキーワードなんだけど。。

関数に実引数のポインタを渡すとその値が、対応する仮引数に代入(コピー)され、以後、仮引数は変数のように使える。
仮引数の値を変えてもコピーが書き換えられるだけで元の実引数の値には影響しない。
書き換えられるようにするには、書き換えたい場所のアドレスを渡して、*演算子か、[]演算子を使わないといけない。

564 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 15:27:46.08 ID:10z9ufr/.net]
駄目な例のa = new char [8];はmainのaの複製への代入なのでmainのaはNULLのまま
良い例の*a = new char [8];はmainのaそのものへの代入なので期待した結果が得られる

565 名前:さまよえる蟻人間 mailto:sage [2018/08/28(火) 15:37:02.95 ID:cEEOiaf2.net]
関数呼び出しのとき、実引数がどこにコピーされるかというと、「スタック」という積み上げ式のメモリーブロックか、一時的なCPUレジスタが使われる。
インラインではない関数呼び出しにおいては、関数の戻り先のアドレスと、仮引数のデータがスタックに積み上げられる。
積み上げ式だから、自分自身の関数を呼び出しても動作する。これを「再帰呼び出し」という。

566 名前:さまよえる蟻人間 mailto:sage [2018/08/28(火) 15:39:32.69 ID:cEEOiaf2.net]
スタックの積み上げには限度がある。限度を超えると、スタックサイズが拡張されたり、異常終了する。
スタックの積み上げが限度を超えて異常な状態になることを「スタックオーバーフロー」という。

567 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 15:52:37.71 ID:wM2MhSxp.net]
すません。私の質問が曖昧だったので追加で

void setStr(int *a) {

a[0] = 10;

}

int main() {

int a[10];


setStr(&a[0]);
     cout << a[0] << endl;

return 0;
}

例えば、この場合は、setStr(&a[0])として、その後、関数内でa[0]=10;と値を代入すればちゃんと 10 が出力されます。
前のHPの失敗例も同じくsetStr(a)としてアドレスを渡し、受け取りはポインタ変数なのに値は変わらない。
単に数値か文字列かの違いなんでしょうか?


568 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 16:00:50.42 ID:Gzofmim2.net]
とりあえず一度、配列とポインタに対する余計な先入観を捨てて素直に元サイトを読み込めば理解できると思うよ
一つの考え方に囚われ過ぎてると思う

569 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 16:05:47.55 ID:10z9ufr/.net]
void setStr(char **a) これを
void setStr(int *a) こう読み替え

char *a = NULL; setStr(&a); これを
int a = 0; setStr(&a); こう読み替えてみそ

つまり char* → int と読み替えるんだ
ポインタ変数とアドレスは違うという話は
整数変数と整数は違うという話と同じだ

570 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 16:17:43.85 ID:LgBUyhOe.net]
まあスタック使えとは規格に書いてないんだけどね



571 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 16:35:30.28 ID:wM2MhSxp.net]
ああ分かった!
俺は自分で勝手に「char型のポインタ=文字列だ」と思い込んでて、そのせいで混乱してただけでした。
思い込み怖い・・・

void setStr(char *a) {
a[0]='a';
}

int main() {
char a[] = "

572 名前:test";

setStr(a);
cout << a << endl;
return 0;
}

これで「aest」と表示されたからピンときた。確かに失敗例はポインタ変数を渡しているだけだw
ありがとうございました。
[]
[ここ壊れてます]

573 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 18:19:39.20 ID:4ROMapnq.net]
>>563
そりゃそうだよ、世の中にはスタックを持たないマシンもあるからな

574 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 18:33:43.92 ID:oY+WdDFv.net]
ハードウェアスタックを持たなくて再帰呼び出し出来ないうんこ環境があるね

575 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 18:38:07.52 ID:h1lwFjom.net]
そういうのは自分で値を積み上げるように作るしかないな

576 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 18:45:10.17 ID:Gzofmim2.net]
そういえばずいぶん昔に昔ながらのBASIC言語でクイックソートを実装したときに当然サブルーチンの再起呼び出しなど使えないので
自分で似たようなことをやったなあ
というか確か何かのプログラム認定試験の定番の出題テーマだった気がする
当時必死に勉強してたことを思い出した

577 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 18:45:55.20 ID:Gzofmim2.net]
再起ってなんだ再帰の誤変換

578 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 18:47:51.41 ID:h1lwFjom.net]
再帰 不能

579 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 19:51:12.99 ID:zI7irPVs.net]
ぴゅう太なんてレジスタがなかった

580 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 19:56:09.59 ID:c8HqOUoV.net]
>>571
そんなアホな…

うわ、ホントだ。汎用レジスタは全て外部RAMにマッピングされてたのね。



581 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:04:33.36 ID:10z9ufr/.net]
制御記憶を主記憶とシェアするアーキテクチャはそんなに珍しくない

582 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:09:30.18 ID:c8HqOUoV.net]
普通にR0とかのレジスタ名ついてるんだけど実体は内蔵RAMにマッピングされてるアーキテクチャならよく見るけど、外部RAMってのは初めて見たわ。
今もこういうアーキテクチャのCPUあるのかな?

583 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:15:00.09 ID:Gymzh0gE.net]
ない

584 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:25:08.96 ID:10z9ufr/.net]
ぴゅうたって内蔵RAMなんだっけ

585 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:28:21.23 ID:c8HqOUoV.net]
>>576
wikipediaによると
ROM 内蔵20Kバイト RAM CPU内蔵256バイト/TMS9918用16Kバイト
だそうだ。

586 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:53:39.14 ID:UQgP5OTn.net]
>>573
制御記憶ってマイクロコードを入れるところなんだが…
主記憶と共用してる奴なんてあったか?

587 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 20:58:39.83 ID:10z9ufr/.net]
>>578
必ずしもマイクロ【コード】を入れるところじゃないんだけどね
たとえばメインフレームではDIAGNOSE命令で制御記憶を目的外使用なんてのをやってたよ
それやってるときはTestインジケーターが点灯することになってて

588 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 21:38:04.13 ID:UQgP5OTn.net]
>>579
> たとえばメインフレームではDIAGNOSE命令で制御記憶を目的外使用なんてのをやってたよ
そんな特殊な例出されてもなぁ w
そりゃ記憶装置だから他の物を入れることはできるよ
だから何? って話だけどな

> それやってるときはTestインジケーターが点灯することになってて
で、主記憶と共用ってどこのアーキテクチャなんだ?

589 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 21:54:20.28 ID:d5vKjLdu.net]
>>580
やめたれ w

590 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 22:02:06.14 ID:lp3F9A9k.net]
それってセキュリティ上問題にならないのか?



591 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 22:15:00.65 ID:d5vKjLdu.net]
いまはやりのcore iのバグみたいな?

592 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 23:07:37.73 ID:E6lvAa/y.net]
メルトダウン事件移行もアップデートの度にどんどんコンパイルとか画像縮小なんかの処理が遅くなってる気がする
もう怖くて淫照は買えない






[ 続きを読む ] / [ 携帯版 ]

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

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