C言語を学びたいんやが、まず何からやればいい? (43レス)
上下前次1-新
1: デフォルトの名無しさん [] 2022/02/22(火) 13:20:21.58 ID:XXijF8a2(1) AAS
プログラミング初心者ワイ
JSでもPYでもなくC言語を学びたい。
C言語を使ってUnityでゲームを作りたいんや。
Macbookは持ってるんやけどまずどうすれば始められるんや?
YouTubeとかで調べても専門用語とか理解できんこと多くて分からんわ。
この板やったらプログラミング有識者いっぱいおるやろと思ってスレ立てた。
2(1): デフォルトの名無しさん [sage] 2022/02/22(火) 18:56:57.57 ID:AqlhodQR(1) AAS
まずこのスレの削除依頼から
3: デフォルトの名無しさん [sage] 2022/02/22(火) 19:25:57.68 ID:EUVG2bnU(1) AAS
>>2
やめたれw
4: デフォルトの名無しさん [sage] 2022/02/22(火) 22:09:19.67 ID:25akAg1H(1) AAS
Unityの動作基盤であるLinuxカーネルのソースコードを半年ROMってると
段々分かってくるから、そうしたらカーネルの開発に参加できるようになってくる
5: デフォルトの名無しさん [sage] 2022/02/22(火) 23:08:20.74 ID:i58TpJdZ(1) AAS
コードウォリアーおすすめ
6: デフォルトの名無しさん [sage] 2022/02/23(水) 07:41:45.52 ID:sJCin9r3(1) AAS
そのやりたい事をググって調べればいいだろ
だから無能なんだよ
7: a4 [] 2022/02/23(水) 10:33:11.63 ID:06useS9K(1) AAS
プログラミングの本を100冊読みながら、実際に沢山ゲームを書けばいいですよ。
8: デフォルトの名無しさん [sage] 2022/02/23(水) 14:34:23.54 ID:t2DTQdCd(1) AAS
c#じゃあかんの?
c#ならUdemyの教材買えば、マリオ的なやつなら一週間で作れる
9: デフォルトの名無しさん [sage] 2022/02/27(日) 16:49:18.70 ID:J4nNjjR1(1) AAS
K&Rを買って完全に理解できるようになればC言語完全に理解したってことだ
10: デフォルトの名無しさん [sage] 2022/02/27(日) 23:36:57.08 ID:/IzO/XXN(1) AAS
Cを理解すればオブジェクト指向でゲームを作ることができるけど、Unityが使えるようになるわけではない。
他人が作ったライブラリの仕様に従うのは、また違った難しさがある。
11: デフォルトの名無しさん [sage] 2022/02/28(月) 08:52:16.02 ID:ZlP/yCwh(1) AAS
何言ってんだこのバカ
12(1): デフォルトの名無しさん [sage] 2022/03/12(土) 00:41:54.15 ID:Jkql8tQc(1) AAS
俺のイメージでは
C言語はELPの展覧会の絵みたいなもんよ
13: デフォルトの名無しさん [sage] 2022/03/13(日) 08:39:48.35 ID:t7UEl8YS(1) AAS
貼っとくね。
0からの、超初心者C言語相談室
2chスレ:tech
1デフォルトの名無しさん2021/05/19(水) 01:34:14.03ID:OYngDuIu
何にも知らない0からの出発、超初心者のためのC言語相談室
0からの、超初心者C++相談室
2chスレ:tech
1デフォルトの名無しさん2018/11/12(月) 14:55:13.35ID:Tf74ZWQr
何にも知らない0からの出発、超初心者のためのC++相談室
14: デフォルトの名無しさん [sage] 2022/03/13(日) 19:15:39.59 ID:LXKFwTPa(1) AAS
オブジェクト指向もCで自分で実装した方がすぐわかるよ
15: デフォルトの名無しさん [sage] 2022/03/13(日) 23:27:30.35 ID:rKh4Srjl(1) AAS
何言ってんだこのバカ
16: デフォルトの名無しさん [sage] 2022/03/15(火) 11:47:07.55 ID:2+ErS/E2(1) AAS
UnityはC#がメインだから
Unityを使いたいならC#から学ぶ方がいいと思う
C言語が使いたいならC言語ベースのエンジンを選んだほうがいいと思う
17: デフォルトの名無しさん [sage] 2022/04/24(日) 04:47:30.24 ID:/nn9hjCc(1) AAS
>>12
おもろいな。
俺は80年代ポップスのPWLなイメージ。
ELPはアセンブラかなぁ
18: デフォルトの名無しさん [sage] 2024/02/27(火) 17:50:47.66 ID:81LB4MQJ(1) AAS
Unityでぐぐれカス
19: 青木康善 [] 2024/08/09(金) 09:08:50.14 ID:FZEpuz0a(1/3) AAS
C言語の構造体は、オブジェクト思考に似ているような。とりあえず、カーニハンリッチーのプログラミング言語Cという書籍を買い、たくさん読みまくってから、アンサーブックを買います。まさか、C言語で、ゲームが作れるとは、知りませんでした。その際、メモリ管理などのポインタはどう使うのか興味あります。
20: 青木康善 [sage] 2024/08/09(金) 09:13:13.63 ID:FZEpuz0a(2/3) AAS
せいぜい、chat GPTに聞いて、javaで、ドラムマシンのソースコード眺めたくらいですが、javaのオブジェクト思考とかが邪魔なような。そもそも、オブジェクト思考は、僕には、例えば、abstractとか、使うのは面倒です。いや、C言語は、charしか文字の型が無いような。enumとかは、列挙か。しかし、APIにしろ、本にしろ、いわゆる最近の生成aiも、いちいちコーディングする際に、入力して参照してたら、納期に間に合わないし、ならば、プログラミング言語Cを読みまくります。
21: 青木康善 [sage] 2024/08/09(金) 09:16:13.30 ID:FZEpuz0a(3/3) AAS
やはり、構造体でしたか。オブジェクト思考っぽいのは。
22: デフォルトの名無しさん [sage] 2024/08/09(金) 11:50:00.27 ID:NZIFRm78(1) AAS
chatGPTとかのAIも進歩したから
これからはC言語が見直されるんだろうな
23(1): デフォルトの名無しさん [sega] 2024/08/12(月) 01:43:13.33 ID:2lKM0Yyl(1/2) AAS
int a = 1;
int b = a+a++;
printf("a=%d, b=%d\n", a,b);
これなんでbが3になるの? 高知インクリメントってその行が終わってから発動すんじゃなかったん?
24: デフォルトの名無しさん [] 2024/08/12(月) 08:03:23.19 ID:+jMHtzbv(1/4) AAS
>>23
それは評価順が未規定なのでコンパイラによって結果は変わり得るし、基本的に避けるコードですね
後置インクリメントは「元の値を返した後に加算される」で、そのタイミングは正確には行の終わりじゃなくて式 (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.01 ID:+jMHtzbv(2/4) AAS
コンパイラのワーニングレベルを上げると警告を出してくれると思うので、有効にすると良いと思う
慣れてる人でも「これはこの動作になるはず」と思い込んでバグに繋がることはあるし、しかもこの手のものは原因を見つけづらいので
26: デフォルトの名無しさん [] 2024/08/12(月) 08:29:35.82 ID:+jMHtzbv(3/4) AAS
b= func(a) + a++;
なんかも危ない
見かけ上多くの人はfuncの引数は加算前のaだと思い込むし、 b = a++ + func(a); はその逆だと思うけど、実はどちらも保証されてない
逆に論理演算は短絡評価される規定がある
z = x && y;
は x が FALSEの時点で全体の決まるので、その場合にyは評価されないことが規定されている
z = x != NULL && func(*x);
が安全なのもこれが理由
27(1): デフォルトの名無しさん [sage] 2024/08/12(月) 10:09:33.57 ID:2lKM0Yyl(2/2) AAS
>論理演算は短絡評価される規定がある
これってよく聞くし実験しても実際そうだけど
仕様書のどこに書いてあんのかいまだにわからん
ほんのちょっぴりだが気になる
28: デフォルトの名無しさん [] 2024/08/12(月) 10:26:19.22 ID:+jMHtzbv(4/4) AAS
>>27
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf
これの71ページ目 (PDFの84ページ目) の 6.5.13 Logical AND Operator の 4 の段落
29: デフォルトの名無しさん [sage] 2024/08/12(月) 14:34:11.50 ID:DCeOjIRt(1) AAS
すげー
30(1): デフォルトの名無しさん [sage] 2024/08/13(火) 08:15:36.04 ID:6ajF2Nvb(1) AAS
>a+a++;
普通に、MISRA-C 違反
自己インクリメントは単独でしか使えない。
他の式と組み合わせてはならない
こういう事をやるプログラマがいるから、
Ruby には、この演算子が無い
Rubyなら、
a=2
p a += 1 #=> 3
31: デフォルトの名無しさん [] 2024/08/13(火) 09:25:41.71 ID:qGcIneKd(1) AAS
Pythonスレで嫌われたRubyおじさんがここにも来たか
CとRubyじゃ用途が違うので関係ないと思ったけど普通に来るんだな
一応、向こうのスレのテンプレートを示しておく
>・当スレにRubyのソースコード類を書くことを禁ず
>・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
>・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
32: 30 [sage] 2024/08/14(水) 00:32:35.54 ID:DeY7Wxx6(1) AAS
組み込みのmruby で、宇宙開発もある。
だから、C・Ruby を使える香具師も多い。
Elixir も組み込みある
本も出ている
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
九州大学などの人工衛星イザナギ・イザナミで使っている
この本に、Virtualbox, Vagrant を使う。
WSL はサポートしないと書いてあるけど、WSL2 でも使えるのでは?
33: デフォルトの名無しさん [sage] 2024/08/19(月) 16:41:44.46 ID:2CjpTy49(1) AAS
お前ら2022年の、しかもC#を間違えてC言語と書いてるスレで何やってんだ
34: デフォルトの名無しさん [] 2024/08/20(火) 13:19:47.53 ID:7gW0oenX(1) AAS
今の時代ならRustをやってからC/C++というのもアリかも知れん
35: デフォルトの名無しさん [] 2024/09/19(木) 00:56:33.21 ID:JdSAMEr4(1) AAS
ポインタの基礎を習得したフェルンだったが、関数ポインタという新たな壁にぶつかっていた。
「フリーレン様、関数ポインタって…一体何に使うんですか?
関数のアドレスを格納するって書いてありますが…。」
フェルンはノートに書かれたコードを眺めながら、首を傾げている。
フリーレンは微笑んで、地面にいくつかの魔法陣を描いた。
「フェルン、見てごらん。これらの魔法陣はそれぞれ異なる魔法を発動するものだ。
火の魔法、水の魔法、回復魔法…。これらの魔法陣を起動するには、
それぞれに対応した呪文を唱える必要があるだろう?」
「はい、そうです。火の魔法なら『Feuer』、水の魔法なら『Wasser』のように…。」
「では、もしも、一つの呪文で、状況に応じて異なる魔法を発動させたい場合はどうする?」
フェルンは少し考えてから答えた。
「えーっと…魔法陣を選ぶための別の呪文を唱えてから、
目的の魔法の呪文を唱える…とかでしょうか?」
「それも一つの方法だが、もっとスマートな方法がある。それが関数ポインタだ。」
フリーレンは地面に描かれた魔法陣の一つを指差した。
「関数ポインタは、魔法陣そのものではなく、
魔法陣を発動させるための呪文を格納するものだと言える。
つまり、状況に応じて異なる呪文を関数ポインタにセットすることで、
一つの呪文で様々な魔法を発動させることができるんだ。」
フェルンは目を輝かせた。
「なるほど! つまり、関数ポインタを使うことで、
実行する関数を動的に切り替えることができるんですね!」
「その通りだ。例えば、ゲームで敵の種類によって異なる攻撃パターンを実行したい場合や、
ソートアルゴリズムを状況に応じて切り替えたい場合などに、関数ポインタは非常に役立つ。」
36: デフォルトの名無しさん [] 2024/09/19(木) 20:44:58.11 ID:/CBFTgYs(1) AAS
ていうかCが欠陥言語だから
void*でもいいんだけど
37: デフォルトの名無しさん [sage] 2024/09/21(土) 02:55:15.27 ID:2C51SPxe(1) AAS
フリーレン様、これはどういうことですか?
このソースはポインタがすべて void* です
38: デフォルトの名無しさん [sage] 2024/09/21(土) 07:06:36.57 ID:T1UE+DVT(1) AAS
「良いところに気がついたね、フェルン。
これはね、汎用的な関数ポインタの使い方を示しているんだ。」
フリーレンは地面に新たな魔法陣を描き、
その上に様々な種類のアイテム -- 剣、杖、薬草 -- を置いた。
「見ての通り、この魔法陣はどんなアイテムでも受け入れることができる。でも、
アイテムの種類によって、魔法陣の効果は変わるだろう?剣なら強化、
杖なら魔力充填、薬草なら効能増幅といった具合にね。」
「確かに…。でも、それはどうやって実現するんですか?魔法陣は一つなのに…」
「それが void* の役割なんだよ。void* はどんな型のデータも指し示せる、
いわば万能ポインタなんだ。この魔法陣は void* 型の引数を受け取ることで、
どんなアイテムでも受け入れることができる。
そして、受け取ったアイテムの種類を判別し、それに応じた処理を行うんだ。」
フリーレンは魔法陣に軽く触れ、光がアイテムを包み込んだ。
剣は輝きを増し、杖からは魔力が溢れ、薬草は鮮やかな緑色に輝いた。
「ソースコードに戻ると、void* 型の関数ポインタは、どんな型の引数と
戻り値を持つ関数でも指し示せる。ただし、使用する際には、キャストによって
具体的な型を指定する必要がある。魔法陣で言えば、アイテムの種類を判別して、
適切な処理を行う呪文を唱えるようなものだね。」
「なるほど…つまり、void* 型の関数ポインタは、どんな関数でも指し示せる代わりに、
使う時に注意が必要ということですね。」
「その通り。柔軟性が高い分、責任も大きくなる。
void* を使う際は、型安全性を確保するために細心の注意を払う必要があるんだ。」
フリーレンは地面の魔法陣を消し、フェルンの方を向いた。
「関数ポインタは強力なツールだが、使いこなすには練習と理解が必要だ。
様々な例を試してみて、その仕組みをしっかりと理解するんだよ。」
39: デフォルトの名無しさん [sage] 2024/09/21(土) 12:42:30.03 ID:pEk1QATs(1) AAS
何そのフェルンとかフリーレン?
40: デフォルトの名無しさん [sage] 2024/09/24(火) 10:34:46.72 ID:/2yiAcKT(1) AAS
どんな型で来るか分からないから、とりあえずvoid*で受けとけ
って感じだろ?
41: デフォルトの名無しさん [sage] 2024/09/24(火) 14:45:01.61 ID:t1wxu4v8(1) AAS
v o i d * 受け・・・ 見事な・・・
42: デフォルトの名無しさん [] 2024/09/26(木) 10:56:48.17 ID:R5lWYvWF(1) AAS
C: void * で良いよね!
C++: void * はヤバイから警告厳しくしようぜ
Java/Smalltalk: おい C++ お前共通の祖先無いやん
C++: あっしまっ・・・
43: デフォルトの名無しさん [sage] 2024/10/27(日) 09:26:18.78 ID:MEhX5xjc(1) AAS
関数ポインタはvoid*でなくちゃんと方指定したほうがいい
形チェックしてくれるから
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s