プログラミング初心者ワイ
JSでもPYでもなくC言語を学びたい。
C言語を使ってUnityでゲームを作りたいんや。
Macbookは持ってるんやけどまずどうすれば始められるんや?
YouTubeとかで調べても専門用語とか理解できんこと多くて分からんわ。
この板やったらプログラミング有識者いっぱいおるやろと思ってスレ立てた。
C言語を学びたいんやが、まず何からやればいい?
1デフォルトの名無しさん
2022/02/22(火) 13:20:21.58ID:XXijF8a22022/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*でなくちゃんと方指定したほうがいい
形チェックしてくれるから
形チェックしてくれるから
レスを投稿する
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【高市悲報】ウクライナ、ガチで敗北か?東部の帰属国民投票にかける可能性-ゼレンスキー [888298477]
- 逆にこの国を韓国人ファーストにしてみるってのはどう?
- 頭痛くなくなった男の子wwwwwwwwww
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
