プログラミング初心者ワイ
JSでもPYでもなくC言語を学びたい。
C言語を使ってUnityでゲームを作りたいんや。
Macbookは持ってるんやけどまずどうすれば始められるんや?
YouTubeとかで調べても専門用語とか理解できんこと多くて分からんわ。
この板やったらプログラミング有識者いっぱいおるやろと思ってスレ立てた。
探検
C言語を学びたいんやが、まず何からやればいい?
1デフォルトの名無しさん
2022/02/22(火) 13:20:21.58ID:XXijF8a22022/02/22(火) 18:56:57.57ID:AqlhodQR
まずこのスレの削除依頼から
2022/02/22(火) 19:25:57.68ID:EUVG2bnU
>>2
やめたれw
やめたれw
2022/02/22(火) 22:09:19.67ID:25akAg1H
Unityの動作基盤であるLinuxカーネルのソースコードを半年ROMってると
段々分かってくるから、そうしたらカーネルの開発に参加できるようになってくる
段々分かってくるから、そうしたらカーネルの開発に参加できるようになってくる
2022/02/22(火) 23:08:20.74ID:i58TpJdZ
コードウォリアーおすすめ
2022/02/23(水) 07:41:45.52ID:sJCin9r3
そのやりたい事をググって調べればいいだろ
だから無能なんだよ
だから無能なんだよ
7a4
2022/02/23(水) 10:33:11.63ID:06useS9K プログラミングの本を100冊読みながら、実際に沢山ゲームを書けばいいですよ。
2022/02/23(水) 14:34:23.54ID:t2DTQdCd
c#じゃあかんの?
c#ならUdemyの教材買えば、マリオ的なやつなら一週間で作れる
c#ならUdemyの教材買えば、マリオ的なやつなら一週間で作れる
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*でなくちゃんと方指定したほうがいい
形チェックしてくれるから
形チェックしてくれるから
レスを投稿する
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 映画「ゼルダの伝説」、リンクとゼルダ姫が白人になってしまう。日本のものは日本人だろうが!! [592058334]
- 高市早苗「株やってる奴ザマァwww格差是正のためにも、もっと暴落した方がいいよwww」(´・ω・`)確かに。 [252835186]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- んなっしょい🍬禁止🈲のお🏡
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
