X



C言語なら俺に聞け 153

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 5fba-LL4R)
垢版 |
2019/08/17(土) 23:02:42.00ID:tN5mSQYg0
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言語なら俺に聞け 152
https://mevius.5ch.net/test/read.cgi/tech/1560763630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0218デフォルトの名無しさん (ワッチョイ 7188-L4DL)
垢版 |
2019/11/15(金) 19:17:48.26ID:SL2qDcaa0
>>215
関数に値を渡すのはわかるよね?
printfって関数に出力して欲しい数値や文字を渡してる
この渡すときにCPUの動き的には複製されたものが渡される
数値なら複製しても対して問題ないけど文字列の場合なんかだと複製することで消費されるメモリが増えてしまう
だから文字列全部を複製なんかせずに文字列の先頭の場所だけ渡す
受け取ったprintf側ではその場所を元に文字列にアクセスする
この場所を指し示す仕組みがポインタと呼ばれるもの
10文字でも1000文字でも先頭の場所、つまりアドレスは4byteとかで表せるので情報の受け渡し効率が良い

正確には間違ってる部分もあるかもしれんがだいたいこんなイメージ
0222デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/15(金) 19:32:48.14ID:uUFlvtLt0
産休。関数とポインタをもう一度やり直してくる
0226デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/16(土) 08:31:42.30ID:ptZ6lm890
int main()しか使ってないわ。どういう時に使うんだっけそれ
0231デフォルトの名無しさん (アウアウウー Sa45-coos)
垢版 |
2019/11/16(土) 10:31:31.82ID:jtqy6mRLa
C言語でOS作ってみたいんだけどなぁ。入門レベルじゃきびしいな
0237デフォルトの名無しさん (ワッチョイ 82ad-6d/E)
垢版 |
2019/11/16(土) 22:07:42.30ID:gv6Xc8ej0
>>234
大半はCで行けそうな感じはするけどな。実際にUNIXやLinuxはそうだし。
厳密に完全に100%Cにするとなると最初からそれを考慮してCPU作らないとできないとは思うが、かといってその必要性はないな。研究目的ならわかるが。
0238デフォルトの名無しさん (ワッチョイ 8202-y756)
垢版 |
2019/11/17(日) 00:21:50.66ID:CjHjsj5F0
>>237
こういう知ったかして無知晒すバカはどうにかならんのかいな
0249デフォルトの名無しさん (ワッチョイ 65e5-6HYk)
垢版 |
2019/11/17(日) 15:17:17.70ID:cZKVuoHK0
231 CでOS作ってみたい
233 RTOSでさえ無理
234 Cだけで?そりゃ無理
237 100%Cは最初からそれを考慮したCPUならできる ←キ
238 237はシッタカ
240 特権命令は?Cプログラムが動き出せる準備は?
241 大半は100% ←キ
243 スタートアップ不要のmainとは?
244 OSの話だよ?
247 話を逸らすな
248 スタートアップだOSじゃない ←キ
0253デフォルトの名無しさん (スップ Sd02-iD2J)
垢版 |
2019/11/17(日) 16:31:19.54ID:Mp5WsRX6d
いや、
どっちかっていうと趣味みたいなもんで
いろんなCPUでやってるけど

ただ単に
Cプログラムが動き出せる最低限の条件
と書いてあるんだからOS起動ではないでしょ
0255デフォルトの名無しさん (スップ Sd02-iD2J)
垢版 |
2019/11/17(日) 16:58:35.66ID:Mp5WsRX6d
Cプログラムと書いてあるんだからCプログラムだろ
OSが起動出来る十分条件ではなく、必要条件の1個
特権命令もその一つ
もっとも特権命令が存在しないCPUや使わなくてもOSがつくれるCPUがあるので
必要条件ではないけど
0257デフォルトの名無しさん (ラクッペ MM81-G967)
垢版 |
2019/11/17(日) 17:02:57.82ID:0F7CIe0FM
ベアメタルであれば尚更main関数を呼び出す前に割込みベクターやスタックポインタの初期化などいろいろ準備が必要だろ
OSに頼れないので自分で準備しないとC
のプログラムは動き出せない
0258デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/17(日) 17:04:33.98ID:8gWobnsKa
さて、次にどんな燃料を投下すれば炎上するか・・・
0259デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/17(日) 17:06:07.28ID:8gWobnsKa
とりあえずCでOSでスレが活性化することはわかった。機会があったら他の掲示板でもやってみよう。
0262◆QZaw55cn4c (ワッチョイ 6247-kMGZ)
垢版 |
2019/11/17(日) 18:50:25.01ID:kPaO6TXK0
>>261
>スタックポインタの初期値はリセット時に決められた番地から読み出す
プログラムカウンタの方じゃないですか?
0272デフォルトの名無しさん (ワッチョイ 7188-L4DL)
垢版 |
2019/11/18(月) 09:05:45.96ID:tFTaAL8Z0
OSの無い組み込み環境なんて山ほど存在してて、その環境の中で全部Cのもで書いてるとこも存在してる
そもそもOS入れられるような環境とは言えないけど、こういうとこでCで書いてるものにOS的な動作をさせればそれはCのみで作ったOSと言えるのか?
おそらくどこからどこまでがOSの領域か?がずれてるから延々と罵り合いになるのでは?
0274デフォルトの名無しさん (ワッチョイ e9aa-coos)
垢版 |
2019/11/18(月) 09:59:14.55ID:FeTeb+YA0
私のために争わないで!
0277デフォルトの名無しさん (ワッチョイ cdda-JEG5)
垢版 |
2019/11/18(月) 10:27:02.98ID:7xBgQ7dd0
組み込み用の処理系についてはメーカ独自拡張の独壇場

コンパイラ本体は
__section
__bank
__interrupt
など独自拡張多し

プリプロセッサも
#pragma
で設定弄らないといけないので注意
0280デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/18(月) 12:06:28.17ID:vV3s+CrDa
ピクピク
0285デフォルトの名無しさん (アウウィフ FF45-/Df3)
垢版 |
2019/11/18(月) 12:59:12.61ID:ahZzeXy3F
CP/MにはBDSCが定番だった
0289デフォルトの名無しさん (ワッチョイ d11d-7HT4)
垢版 |
2019/11/18(月) 14:18:07.35ID:+ljooU2/0
ビジネスで優秀な人材育成する上司は何を教えているのか?
https://www.youtube.com/watch?v=apxtSqxjw08&;t=13s
マクドナルド伝説の店長が教える、最強店長になるために必要なこと
https://www.youtube.com/watch?v=0wMbR7JIeeQ&;t=3154s
「最強の働き方」長時間労働やノウハウよりも大切なこと
https://www.youtube.com/watch?v=JnMHbI1-e3E&;t=3606s
美容師の楽しさ再発見!やる気スイッチが入る働き方セミナー
https://www.youtube.com/watch?v=DGzXQT799oY
視覚障がいを乗り越えた活法家
https://www.youtube.com/watch?v=6IuY_K3uFdo&;t=805s
0292デフォルトの名無しさん (アウアウウー Sa45-coos)
垢版 |
2019/11/18(月) 20:54:33.04ID:Ufz4tuHsa
ものづくりC言語熟ってサイトいいじゃん!
0294デフォルトの名無しさん (アウアウウー Sa45-coos)
垢版 |
2019/11/18(月) 21:06:39.12ID:Ufz4tuHsa
>>293
もしかしてキ○ガイ?
0295デフォルトの名無しさん (ワッチョイ 1102-coos)
垢版 |
2019/11/18(月) 21:29:13.55ID:9xSA7Xxe0
ものづくりC言語塾のポインタの説明わけわからん
0296デフォルトの名無しさん (ワッチョイ 2905-n3bN)
垢版 |
2019/11/18(月) 22:06:08.02ID:WvhlQmiy0
C言語のポインタはCPU機械語における間接アドレシングの抽象化だろ?
それ以上でも以下でも無い
0299デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
垢版 |
2019/11/19(火) 12:48:33.17ID:8naC8O/UF
>>296
インクリメントは良く出来てるな

あとポインタのポインタと配列へのポインタの文法を混乱して覚えてる人が居て
そいつらのせいで劣化コピーが出回ってるのがさらなる混乱の原因

正しく理解して正しく使えばCのポインタは何も難しくない
0301デフォルトの名無しさん (スッップ Sda2-lusp)
垢版 |
2019/11/19(火) 13:26:52.18ID:O502C4IMd
二次元配列は二重ポインタで扱うという自分の勘違いを正当化したくて
mallocでポインタの配列を作るやり方を唯一正統と強弁するアホが
fjで暴れてたな、そういえば
0303デフォルトの名無しさん (ワイーワ2 FFca-/nAh)
垢版 |
2019/11/19(火) 14:08:13.34ID:8naC8O/UF
>>300 みたいなのを炙り出せたのであれば
レスに意味があったと言えよう
0307デフォルトの名無しさん (アウアウウー Sa45-nhir)
垢版 |
2019/11/19(火) 20:16:56.03ID:c65LTQ+sa
>>299
アセンブラやったことのない人は中々正しく理解できないようで、それでポインタの事だけ書いてある本が沢山出ちゃうんだろうな。
0308デフォルトの名無しさん (アークセー Sx11-9KXC)
垢版 |
2019/11/19(火) 21:33:52.66ID:pHwegslWx
何年も書かないと忘れるな〜

ポインタのポインタは、ポインタの値を参照渡しするときくらいしか思いつかん

char *p;
foo(&p);

void foo(char **p) {…}

みたいな、
305のような書き方はピンとこないわ
0314デフォルトの名無しさん (ラクッペ MM81-G967)
垢版 |
2019/11/20(水) 05:59:16.05ID:6t1gUx2GM
関数の引数に限って言えば
func(**p)
func(*p[])
func(p[][])
func(p[][10])
どれでも同じ
引数として配列を引き渡す方法はない
どれも先頭要素へのポインタが値渡しされる
関数側で引数がポインタへのポインタ(いわゆる二重ポインタ)なのか、ポインタの配列なのか、配列の配列(いわゆる二次元配列) なのか区別する手段はない
引数に配列として要素数を渡してもエラーにはならないだけで無視される
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況