C言語を学びたいんやが、まず何からやればいい?
2022/02/27(日) 16:49:18.70ID:J4nNjjR1
K&Rを買って完全に理解できるようになればC言語完全に理解したってことだ
2022/02/27(日) 23:36:57.08ID:/IzO/XXN
Cを理解すればオブジェクト指向でゲームを作ることができるけど、Unityが使えるようになるわけではない。
他人が作ったライブラリの仕様に従うのは、また違った難しさがある。
他人が作ったライブラリの仕様に従うのは、また違った難しさがある。
2022/02/28(月) 08:52:16.02ID:ZlP/yCwh
何言ってんだこのバカ
2022/03/12(土) 00:41:54.15ID:Jkql8tQc
俺のイメージでは
C言語はELPの展覧会の絵みたいなもんよ
C言語はELPの展覧会の絵みたいなもんよ
2022/03/13(日) 08:39:48.35ID:t7UEl8YS
貼っとくね。
0からの、超初心者C言語相談室
https://mevius.5ch.net/test/read.cgi/tech/1621355654/
1デフォルトの名無しさん2021/05/19(水) 01:34:14.03ID:OYngDuIu
何にも知らない0からの出発、超初心者のためのC言語相談室
0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/
1デフォルトの名無しさん2018/11/12(月) 14:55:13.35ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
0からの、超初心者C言語相談室
https://mevius.5ch.net/test/read.cgi/tech/1621355654/
1デフォルトの名無しさん2021/05/19(水) 01:34:14.03ID:OYngDuIu
何にも知らない0からの出発、超初心者のためのC言語相談室
0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/
1デフォルトの名無しさん2018/11/12(月) 14:55:13.35ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
2022/03/13(日) 19:15:39.59ID:LXKFwTPa
オブジェクト指向もCで自分で実装した方がすぐわかるよ
2022/03/13(日) 23:27:30.35ID:rKh4Srjl
何言ってんだこのバカ
2022/03/15(火) 11:47:07.55ID:2+ErS/E2
UnityはC#がメインだから
Unityを使いたいならC#から学ぶ方がいいと思う
C言語が使いたいならC言語ベースのエンジンを選んだほうがいいと思う
Unityを使いたいならC#から学ぶ方がいいと思う
C言語が使いたいならC言語ベースのエンジンを選んだほうがいいと思う
2022/04/24(日) 04:47:30.24ID:/nn9hjCc
2024/02/27(火) 17:50:47.66ID:81LB4MQJ
Unityでぐぐれカス
19青木康善
2024/08/09(金) 09:08:50.14ID:FZEpuz0a C言語の構造体は、オブジェクト思考に似ているような。とりあえず、カーニハンリッチーのプログラミング言語Cという書籍を買い、たくさん読みまくってから、アンサーブックを買います。まさか、C言語で、ゲームが作れるとは、知りませんでした。その際、メモリ管理などのポインタはどう使うのか興味あります。
20青木康善
2024/08/09(金) 09:13:13.63ID:FZEpuz0a せいぜい、chat GPTに聞いて、javaで、ドラムマシンのソースコード眺めたくらいですが、javaのオブジェクト思考とかが邪魔なような。そもそも、オブジェクト思考は、僕には、例えば、abstractとか、使うのは面倒です。いや、C言語は、charしか文字の型が無いような。enumとかは、列挙か。しかし、APIにしろ、本にしろ、いわゆる最近の生成aiも、いちいちコーディングする際に、入力して参照してたら、納期に間に合わないし、ならば、プログラミング言語Cを読みまくります。
21青木康善
2024/08/09(金) 09:16:13.30ID:FZEpuz0a やはり、構造体でしたか。オブジェクト思考っぽいのは。
2024/08/09(金) 11:50:00.27ID:NZIFRm78
chatGPTとかのAIも進歩したから
これからはC言語が見直されるんだろうな
これからはC言語が見直されるんだろうな
2024/08/12(月) 01:43:13.33ID:2lKM0Yyl
int a = 1;
int b = a+a++;
printf("a=%d, b=%d\n", a,b);
これなんでbが3になるの? 高知インクリメントってその行が終わってから発動すんじゃなかったん?
int b = a+a++;
printf("a=%d, b=%d\n", a,b);
これなんでbが3になるの? 高知インクリメントってその行が終わってから発動すんじゃなかったん?
24デフォルトの名無しさん
2024/08/12(月) 08:03:23.19ID:+jMHtzbv >>23
それは評価順が未規定なのでコンパイラによって結果は変わり得るし、基本的に避けるコードですね
後置インクリメントは「元の値を返した後に加算される」で、そのタイミングは正確には行の終わりじゃなくて式 (a++の部分) の評価時
つまり a + a++ は「a++ は1を返す」と評価した後にaがインクリメントされるので、評価順によっては左側のaが2になり得る
x + y でxを先に評価するというルールはなくて、例えば func(x) + (y + z) は y + z の計算が func(x) より先に行われても問題ないし、それはコンパイラ次第
それは評価順が未規定なのでコンパイラによって結果は変わり得るし、基本的に避けるコードですね
後置インクリメントは「元の値を返した後に加算される」で、そのタイミングは正確には行の終わりじゃなくて式 (a++の部分) の評価時
つまり a + a++ は「a++ は1を返す」と評価した後にaがインクリメントされるので、評価順によっては左側のaが2になり得る
x + y でxを先に評価するというルールはなくて、例えば func(x) + (y + z) は y + z の計算が func(x) より先に行われても問題ないし、それはコンパイラ次第
25デフォルトの名無しさん
2024/08/12(月) 08:16:55.01ID:+jMHtzbv コンパイラのワーニングレベルを上げると警告を出してくれると思うので、有効にすると良いと思う
慣れてる人でも「これはこの動作になるはず」と思い込んでバグに繋がることはあるし、しかもこの手のものは原因を見つけづらいので
慣れてる人でも「これはこの動作になるはず」と思い込んでバグに繋がることはあるし、しかもこの手のものは原因を見つけづらいので
26デフォルトの名無しさん
2024/08/12(月) 08:29:35.82ID:+jMHtzbv b= func(a) + a++;
なんかも危ない
見かけ上多くの人はfuncの引数は加算前のaだと思い込むし、 b = a++ + func(a); はその逆だと思うけど、実はどちらも保証されてない
逆に論理演算は短絡評価される規定がある
z = x && y;
は x が FALSEの時点で全体の決まるので、その場合にyは評価されないことが規定されている
z = x != NULL && func(*x);
が安全なのもこれが理由
なんかも危ない
見かけ上多くの人はfuncの引数は加算前のaだと思い込むし、 b = a++ + func(a); はその逆だと思うけど、実はどちらも保証されてない
逆に論理演算は短絡評価される規定がある
z = x && y;
は x が FALSEの時点で全体の決まるので、その場合にyは評価されないことが規定されている
z = x != NULL && func(*x);
が安全なのもこれが理由
2024/08/12(月) 10:09:33.57ID:2lKM0Yyl
>論理演算は短絡評価される規定がある
これってよく聞くし実験しても実際そうだけど
仕様書のどこに書いてあんのかいまだにわからん
ほんのちょっぴりだが気になる
これってよく聞くし実験しても実際そうだけど
仕様書のどこに書いてあんのかいまだにわからん
ほんのちょっぴりだが気になる
28デフォルトの名無しさん
2024/08/12(月) 10:26:19.22ID:+jMHtzbv >>27
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf
これの71ページ目 (PDFの84ページ目) の 6.5.13 Logical AND Operator の 4 の段落
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf
これの71ページ目 (PDFの84ページ目) の 6.5.13 Logical AND Operator の 4 の段落
2024/08/12(月) 14:34:11.50ID:DCeOjIRt
すげー
2024/08/13(火) 08:15:36.04ID:6ajF2Nvb
>a+a++;
普通に、MISRA-C 違反
自己インクリメントは単独でしか使えない。
他の式と組み合わせてはならない
こういう事をやるプログラマがいるから、
Ruby には、この演算子が無い
Rubyなら、
a=2
p a += 1 #=> 3
普通に、MISRA-C 違反
自己インクリメントは単独でしか使えない。
他の式と組み合わせてはならない
こういう事をやるプログラマがいるから、
Ruby には、この演算子が無い
Rubyなら、
a=2
p a += 1 #=> 3
31デフォルトの名無しさん
2024/08/13(火) 09:25:41.71ID:qGcIneKd Pythonスレで嫌われたRubyおじさんがここにも来たか
CとRubyじゃ用途が違うので関係ないと思ったけど普通に来るんだな
一応、向こうのスレのテンプレートを示しておく
>・当スレにRubyのソースコード類を書くことを禁ず
>・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
>・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
CとRubyじゃ用途が違うので関係ないと思ったけど普通に来るんだな
一応、向こうのスレのテンプレートを示しておく
>・当スレにRubyのソースコード類を書くことを禁ず
>・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
>・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
3230
2024/08/14(水) 00:32:35.54ID:DeY7Wxx6 組み込みのmruby で、宇宙開発もある。
だから、C・Ruby を使える香具師も多い。
Elixir も組み込みある
本も出ている
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
九州大学などの人工衛星イザナギ・イザナミで使っている
この本に、Virtualbox, Vagrant を使う。
WSL はサポートしないと書いてあるけど、WSL2 でも使えるのでは?
だから、C・Ruby を使える香具師も多い。
Elixir も組み込みある
本も出ている
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
九州大学などの人工衛星イザナギ・イザナミで使っている
この本に、Virtualbox, Vagrant を使う。
WSL はサポートしないと書いてあるけど、WSL2 でも使えるのでは?
2024/08/19(月) 16:41:44.46ID:2CjpTy49
お前ら2022年の、しかもC#を間違えてC言語と書いてるスレで何やってんだ
34デフォルトの名無しさん
2024/08/20(火) 13:19:47.53ID:7gW0oenX 今の時代ならRustをやってからC/C++というのもアリかも知れん
35デフォルトの名無しさん
2024/09/19(木) 00:56:33.21ID:JdSAMEr4 ポインタの基礎を習得したフェルンだったが、関数ポインタという新たな壁にぶつかっていた。
「フリーレン様、関数ポインタって…一体何に使うんですか?
関数のアドレスを格納するって書いてありますが…。」
フェルンはノートに書かれたコードを眺めながら、首を傾げている。
フリーレンは微笑んで、地面にいくつかの魔法陣を描いた。
「フェルン、見てごらん。これらの魔法陣はそれぞれ異なる魔法を発動するものだ。
火の魔法、水の魔法、回復魔法…。これらの魔法陣を起動するには、
それぞれに対応した呪文を唱える必要があるだろう?」
「はい、そうです。火の魔法なら『Feuer』、水の魔法なら『Wasser』のように…。」
「では、もしも、一つの呪文で、状況に応じて異なる魔法を発動させたい場合はどうする?」
フェルンは少し考えてから答えた。
「えーっと…魔法陣を選ぶための別の呪文を唱えてから、
目的の魔法の呪文を唱える…とかでしょうか?」
「それも一つの方法だが、もっとスマートな方法がある。それが関数ポインタだ。」
フリーレンは地面に描かれた魔法陣の一つを指差した。
「関数ポインタは、魔法陣そのものではなく、
魔法陣を発動させるための呪文を格納するものだと言える。
つまり、状況に応じて異なる呪文を関数ポインタにセットすることで、
一つの呪文で様々な魔法を発動させることができるんだ。」
フェルンは目を輝かせた。
「なるほど! つまり、関数ポインタを使うことで、
実行する関数を動的に切り替えることができるんですね!」
「その通りだ。例えば、ゲームで敵の種類によって異なる攻撃パターンを実行したい場合や、
ソートアルゴリズムを状況に応じて切り替えたい場合などに、関数ポインタは非常に役立つ。」
「フリーレン様、関数ポインタって…一体何に使うんですか?
関数のアドレスを格納するって書いてありますが…。」
フェルンはノートに書かれたコードを眺めながら、首を傾げている。
フリーレンは微笑んで、地面にいくつかの魔法陣を描いた。
「フェルン、見てごらん。これらの魔法陣はそれぞれ異なる魔法を発動するものだ。
火の魔法、水の魔法、回復魔法…。これらの魔法陣を起動するには、
それぞれに対応した呪文を唱える必要があるだろう?」
「はい、そうです。火の魔法なら『Feuer』、水の魔法なら『Wasser』のように…。」
「では、もしも、一つの呪文で、状況に応じて異なる魔法を発動させたい場合はどうする?」
フェルンは少し考えてから答えた。
「えーっと…魔法陣を選ぶための別の呪文を唱えてから、
目的の魔法の呪文を唱える…とかでしょうか?」
「それも一つの方法だが、もっとスマートな方法がある。それが関数ポインタだ。」
フリーレンは地面に描かれた魔法陣の一つを指差した。
「関数ポインタは、魔法陣そのものではなく、
魔法陣を発動させるための呪文を格納するものだと言える。
つまり、状況に応じて異なる呪文を関数ポインタにセットすることで、
一つの呪文で様々な魔法を発動させることができるんだ。」
フェルンは目を輝かせた。
「なるほど! つまり、関数ポインタを使うことで、
実行する関数を動的に切り替えることができるんですね!」
「その通りだ。例えば、ゲームで敵の種類によって異なる攻撃パターンを実行したい場合や、
ソートアルゴリズムを状況に応じて切り替えたい場合などに、関数ポインタは非常に役立つ。」
36デフォルトの名無しさん
2024/09/19(木) 20:44:58.11ID:/CBFTgYs ていうかCが欠陥言語だから
void*でもいいんだけど
void*でもいいんだけど
2024/09/21(土) 02:55:15.27ID:2C51SPxe
フリーレン様、これはどういうことですか?
このソースはポインタがすべて void* です
このソースはポインタがすべて void* です
2024/09/21(土) 07:06:36.57ID:T1UE+DVT
「良いところに気がついたね、フェルン。
これはね、汎用的な関数ポインタの使い方を示しているんだ。」
フリーレンは地面に新たな魔法陣を描き、
その上に様々な種類のアイテム -- 剣、杖、薬草 -- を置いた。
「見ての通り、この魔法陣はどんなアイテムでも受け入れることができる。でも、
アイテムの種類によって、魔法陣の効果は変わるだろう?剣なら強化、
杖なら魔力充填、薬草なら効能増幅といった具合にね。」
「確かに…。でも、それはどうやって実現するんですか?魔法陣は一つなのに…」
「それが void* の役割なんだよ。void* はどんな型のデータも指し示せる、
いわば万能ポインタなんだ。この魔法陣は void* 型の引数を受け取ることで、
どんなアイテムでも受け入れることができる。
そして、受け取ったアイテムの種類を判別し、それに応じた処理を行うんだ。」
フリーレンは魔法陣に軽く触れ、光がアイテムを包み込んだ。
剣は輝きを増し、杖からは魔力が溢れ、薬草は鮮やかな緑色に輝いた。
「ソースコードに戻ると、void* 型の関数ポインタは、どんな型の引数と
戻り値を持つ関数でも指し示せる。ただし、使用する際には、キャストによって
具体的な型を指定する必要がある。魔法陣で言えば、アイテムの種類を判別して、
適切な処理を行う呪文を唱えるようなものだね。」
「なるほど…つまり、void* 型の関数ポインタは、どんな関数でも指し示せる代わりに、
使う時に注意が必要ということですね。」
「その通り。柔軟性が高い分、責任も大きくなる。
void* を使う際は、型安全性を確保するために細心の注意を払う必要があるんだ。」
フリーレンは地面の魔法陣を消し、フェルンの方を向いた。
「関数ポインタは強力なツールだが、使いこなすには練習と理解が必要だ。
様々な例を試してみて、その仕組みをしっかりと理解するんだよ。」
これはね、汎用的な関数ポインタの使い方を示しているんだ。」
フリーレンは地面に新たな魔法陣を描き、
その上に様々な種類のアイテム -- 剣、杖、薬草 -- を置いた。
「見ての通り、この魔法陣はどんなアイテムでも受け入れることができる。でも、
アイテムの種類によって、魔法陣の効果は変わるだろう?剣なら強化、
杖なら魔力充填、薬草なら効能増幅といった具合にね。」
「確かに…。でも、それはどうやって実現するんですか?魔法陣は一つなのに…」
「それが void* の役割なんだよ。void* はどんな型のデータも指し示せる、
いわば万能ポインタなんだ。この魔法陣は void* 型の引数を受け取ることで、
どんなアイテムでも受け入れることができる。
そして、受け取ったアイテムの種類を判別し、それに応じた処理を行うんだ。」
フリーレンは魔法陣に軽く触れ、光がアイテムを包み込んだ。
剣は輝きを増し、杖からは魔力が溢れ、薬草は鮮やかな緑色に輝いた。
「ソースコードに戻ると、void* 型の関数ポインタは、どんな型の引数と
戻り値を持つ関数でも指し示せる。ただし、使用する際には、キャストによって
具体的な型を指定する必要がある。魔法陣で言えば、アイテムの種類を判別して、
適切な処理を行う呪文を唱えるようなものだね。」
「なるほど…つまり、void* 型の関数ポインタは、どんな関数でも指し示せる代わりに、
使う時に注意が必要ということですね。」
「その通り。柔軟性が高い分、責任も大きくなる。
void* を使う際は、型安全性を確保するために細心の注意を払う必要があるんだ。」
フリーレンは地面の魔法陣を消し、フェルンの方を向いた。
「関数ポインタは強力なツールだが、使いこなすには練習と理解が必要だ。
様々な例を試してみて、その仕組みをしっかりと理解するんだよ。」
2024/09/21(土) 12:42:30.03ID:pEk1QATs
何そのフェルンとかフリーレン?
2024/09/24(火) 10:34:46.72ID:/2yiAcKT
どんな型で来るか分からないから、とりあえずvoid*で受けとけ
って感じだろ?
って感じだろ?
2024/09/24(火) 14:45:01.61ID:t1wxu4v8
v o i d * 受け・・・ 見事な・・・
42デフォルトの名無しさん
2024/09/26(木) 10:56:48.17ID:R5lWYvWF C: void * で良いよね!
C++: void * はヤバイから警告厳しくしようぜ
Java/Smalltalk: おい C++ お前共通の祖先無いやん
C++: あっしまっ・・・
C++: void * はヤバイから警告厳しくしようぜ
Java/Smalltalk: おい C++ お前共通の祖先無いやん
C++: あっしまっ・・・
2024/10/27(日) 09:26:18.78ID:MEhX5xjc
関数ポインタはvoid*でなくちゃんと方指定したほうがいい
形チェックしてくれるから
形チェックしてくれるから
44デフォルトの名無しさん
2025/12/21(日) 15:02:18.32ID:i93tKLa3 もうRustで良いわ
2025/12/23(火) 12:06:50.75ID:i9POOTwU
Cより前にCSやれ
C#じゃないぞ
ComputerScienceだぞ
C#じゃないぞ
ComputerScienceだぞ
46デフォルトの名無しさん
2026/02/12(木) 09:38:58.14ID:Ci+OLtVS あとアルゴリズム図鑑も買っと毛
47デフォルトの名無しさん
2026/06/04(木) 14:44:06.62ID:4SiYG4iH C用のmapというかhashtableでfreeで使える標準的なライブラリを教えて
48デフォルトの名無しさん
2026/06/15(月) 11:31:48.05ID:+/cPB7Ei マルチポストか?
首吊って死ね
首吊って死ね
2026/06/18(木) 00:47:16.38ID:2jzoAy97
>>47 自前で作るのが勉強なる
2026/07/01(水) 21:25:27.26ID:xfe/unY1
>>47 学習目的なら自分で作れ
51デフォルトの名無しさん
2026/07/11(土) 14:48:26.72ID:EKW8EhdF >>1
2026年時点では『新・明解C言語 入門編 第2版』(著: 柴田望洋 SBクリエイティブ) を勧める
2026年時点では『新・明解C言語 入門編 第2版』(著: 柴田望洋 SBクリエイティブ) を勧める
52デフォルトの名無しさん
2026/07/11(土) 16:42:49.08ID:0yrW5OXH2026/07/11(土) 21:56:02.07ID:EKW8EhdF
>>52
ウェブ上ならそれが一番かなー
ウェブ上ならそれが一番かなー
2026/07/14(火) 22:54:40.55ID:/b2uC2Vr
新・明解C言語は名著
55デフォルトの名無しさん
2026/07/18(土) 23:50:14.12ID:w7x+lwtj Cを学びたいなら、まずハッシュテーブルを書くことだよね
56デフォルトの名無しさん
2026/07/18(土) 23:51:21.62ID:6AhTZGjl 流石に最初からそれはキツいw
57デフォルトの名無しさん
2026/07/19(日) 00:06:59.07ID:RWX6Mgcf 最初は入門書からやればいいよ
ただK&Rはやめとけ
ただK&Rはやめとけ
58デフォルトの名無しさん
2026/07/19(日) 06:22:17.69ID:xt1YJNf6 K&Rはやめとけおじさん「K&Rはやめとけ」
59デフォルトの名無しさん
2026/07/19(日) 06:52:15.37ID:IfQbbrL6 実際K&Rは古すぎる
60デフォルトの名無しさん
2026/07/19(日) 14:51:15.51ID:S61EK5ez これからCやるなら
・VS Code
・WSL Ubuntu
・gcc
・新・明解C言語
・メモリでポインタ解説する教材1つ
これよ
・VS Code
・WSL Ubuntu
・gcc
・新・明解C言語
・メモリでポインタ解説する教材1つ
これよ
61デフォルトの名無しさん
2026/07/19(日) 19:41:07.65ID:kRD/os+1 新・明解C言語はいいよな
62デフォルトの名無しさん
2026/07/19(日) 19:47:03.08ID:OLhwf90v メモリでポインタ解説する教材を探すのが一番きつい
レスを投稿する
ニュース
- フランスのスーパー数百店舗で冷蔵設備にサイバー攻撃 温度が最高50度に上昇し食品大量廃棄に [少考さん★]
- 【野球】ドジャース痛恨 2戦連続逆転負け2連敗 山本由伸が今季最短3回途中KO 大谷翔平は無安打 110打席ノーアーチ… ★2 [阿弥陀ヶ峰★]
- 【TBS】『オールスター後夜祭』ビキニ姿のアシスタントに疑問の声「意味もなく水着」企画内の“尻を触る“行為も物議 [Ailuropoda melanoleuca★]
- 絶対こうなるってわかってたでしょ! 「生活道路30キロ制限」珍騒曲!! [夜のけいちゃん★]
- 国連憲章の「旧敵国条項」巡り中国・ロシア・北朝鮮が連動して日本批判、政府は警戒…対外発信強化で対抗 [ぐれ★]
- 女性人気ユーチューバーのXに、家族一同名義で「永眠致しました」と報告文掲載 最近心配の声も [冬月記者★]
- 【高市悲報】人手不足倒産、過去最多「募集しても人が来ない」 [237216734]
- 簗農水大臣、農水省内に『ヤナちゃん係」を作られていることが判明🥺 [931948549]
- 【悲報】30歳ゆとり世代中年男性さん、寿司屋でトロから食べてしまい『非常識。教養がない』と大炎上wwwwwwwwwwwwwwwwwwww [257926174]
- 【高市悲報】愛国者「VIVANTを観て中・国がいかに悪い国か分かりました!国防費を増やして中・国との戦争に備えよう!」 [165981677]
- 【悲報】ドジャース、打率.150の大谷をスタメンから外すことを検討・・・ [514851239]
- 【朗報】ノーベル賞遺伝学者「黒人は知能が劣っている、これは事実だ」→学会追放へ [339035499]