C言語について語るスレ


121ななしのよっしん :2016/04/27(水) 14:06:14 ID: S01Z1DFLIi
の上っ面をやるより先に
プログラムとはなんぞやを理解すべき

122ななしのよっしん :2016/07/17(日) 15:09:14 ID: BfZiHfwtha
よくポインタで詰まるがいるがコンピュータアーキテクチャを勉強すればそれなりに理解できるだろ
勉強の仕方的にとりあえず何となくC触ってこんなものなのかーと掴んだ上でハードウェアの方行ってメモリ処理なり割り込みなり見てCに帰ってくるとよく分かるようになる(まあ偶にそっからアセンブラとかバイナリコード行って帰ってこなくなる人がいるけどそんな変態はあんまり居ないから大丈夫だ)
まあ何が言いたいかって言うとPICやれ
Cは実物(ハードウェア)と仮想間(プログラム)の渡しだし、その辺り弄らないならJavaなりC#なりから弄ってオブジェクト指向理解する方がよっぽど建設的

123ななしのよっしん :2016/07/17(日) 15:19:28 ID: BfZiHfwtha
まあJavaなりC#なりやって理解を深めようとメモリ関連イジりだすとどうせCに戻ってくるんですがねw
どうりでプログラマの基礎とか呼ばれるわけだよ、ちくせう
どうせ皆Cになる(辿り着ける人は稀)

124ななしのよっしん :2016/07/31(日) 23:24:06 ID: Orp85TEfNn
なんかの本の著者が書いてた「Cのポインタがわかりにくいのはアドレスどうの概念どうのじゃない、*++pがどうしたp[i]がこうしたっていう変態記法が単に分かりにくいんだ」ってのがストライクだった

125ななしのよっしん :2016/09/14(水) 06:44:55 ID: G3y2KhGZ/x
メモリ管理とかポインタが面倒そうでなんとなく避けてたけど
ポインタとかマクロがある程度使えるようになると気に入ってきて
やがて「Cでオブジェクト指向書くの最強wwほかの言いらねーwww」とか思うようになってしまった

>>123
JavaC#SwiftときてCにきた

126ななしのよっしん :2016/11/17(木) 23:41:57 ID: 1akJmL6WRW
オブジェクト指向やるならC++だろう。

C/C++オブジェクト管理してると、他の言使ってて「この引数コピーが渡るのかどうか」みたいなことが気になる。

127ななしのよっしん :2017/01/17(火) 23:01:06 ID: 7V6NdOBJRb
コピー気にしなくちゃならないのはむしろC++特有というか・・・結局int互換で全部考えるからby valueでいいんだってのがCで、C++はその拡としてクラスを定義したもんだから代入セマンティクス周りが酷いんだよね。大半のOOPのオブジェクトは黙って参照なんで勝手にコピーされたりしない。C++的に見ると全部ポインタで持つようなもんだからな。

128ななしのよっしん :2017/02/11(土) 11:19:12 ID: B2me8Gv2Th
最近まで知らなかったこと:
c で符号付き算術のオーバーフロー未定義なのは知ってたが、符号付きのへの変換時に起きるオーバーフローは処理系定義
unsigned ui = -1; // 必ず UINT_MAX
int i = UINT_MAX; // ほとんどのコンパイラで -1, 鼻から悪魔が飛び出すことはない
void foo(int a, int b) {
 if (a < 0) return;
 if (b < 0) return;
 int c = a + b; // a, b が正なので、オーバーフローしなければcも正
 if (c < 0) extfunc(); // オーバーフローしたときだけ鼻から悪魔を飛び出させるより、オーバーフローをなかったことにする方が現実的で速いので、extfunc は呼ばれない可性がある
}
https://godbolt.org/g/MvWxvP[外部]
あと本当にどうでもいいけど、関数は自動的にポインタへ変換されるので、
func() は (*func)() でも、 (********func)() でも同じ

129ななしのよっしん :2017/03/26(日) 15:39:04 ID: ULXEqMRlVP
エンジニアになりたい学生が身につける言としては正直なところCとかC++よりもjavaとかC#とかPHPとかを進めたいけどな(あるいはなくなると言われつつもおそらくは今後もなくならないであろうVB)。
Cから入ると挫折するか、理解できたとしても他の言に触れたときに却って苦労しそう。
あと、なんかうちの会社に入ってくるCが得意っていう人は何故かの役にも立たない妙なこだわりを持ってる人が多い。

130ななしのよっしん :2017/04/06(木) 02:35:29 ID: 7MXU/4TKw4
>>122 が良いこと言ってんのに……)

131ななしのよっしん :2017/05/12(金) 22:46:59 ID: Orp85TEfNn
>>129
PHPアカ
仕様以前の問題でWeb初心者には面倒くさすぎる
まあCも人の事は言えんけど

batやwshを準備運動にしてC#Windowsクライアントアプリってのが手につきやすいんじゃないかな

132ななしのよっしん :2017/05/16(火) 20:48:36 ID: FD/2EoS+2n
ふと思ったんだが、C言語脆弱性?を利用して、OSが確保してるメモリアクセスしてOSを不安定にさせたり落としたりすることってできるの?

133ななしのよっしん :2017/07/08(土) 11:19:21 ID: 7V6NdOBJRb
CというかそれはOS脆弱性。Cが低レベルべったりを触れるのは本来そうするための言だから、特に脆弱性というわけではない。
ただ、バッファオーバーランやら何やらで問題になりがちなのは、言自体の安全装置が何もないからというのはある。基本的に職人さんが手作業で何かするタイプ具で、を切ったらそりゃヘボだからって世界。まあそうやって世界中にうっかり巻き込まれると死ね脆弱性がたくさんできたわけだが・・・。

134ななしのよっしん :2017/08/05(土) 12:00:32 ID: 1menYU+6GK
コンパイラがある人専用言

135ななしのよっしん :2017/08/12(土) 01:52:36 ID: 1akJmL6WRW
そんなものは要らん

136ななしのよっしん :2017/11/08(水) 06:30:41 ID: bE7j5Ib90k
>>132
できるできないで言うと、できる。(場合もある)

win2000で古い話だが、なぜかメッセージボックスが画面中央じゃなくてどっかのずれた位置に現れるようになった。仕事c++コンパイラ使ってた時になったから。。。

Unixだと、OSが使用している領域のメモリを操作しようとすると問答用でプログラムが落ちると聞いたな。
最近のwinもそうだったような。(試してないし試す気もない

137ななしのよっしん :2017/12/06(水) 12:00:15 ID: +ifMmUIc8g
某医大の物理学の講義にて

医大生「なんで医者になるのに物理学なんて学ばないといけないんだよ!」
物理教授物理学すら理解できない無能医学界に入れないためだ。」

みたいなコピペを思い出した
プロプログラマならC程度扱えないでどうするみたいな話に通じる

138ななしのよっしん :2018/05/19(土) 11:28:00 ID: ju4wxW9pJR
9つのC言語を操るコンピューター天才がいるってマジ

139ななしのよっしん :2018/06/22(金) 21:40:38 ID: b/YvHr6fog
C言語初心者に進めてはいけない(め)

140ななしのよっしん :2018/11/07(水) 21:33:55 ID: wsEGcT44sJ
C言語トラウマ

141ななしのよっしん :2018/12/19(水) 23:28:08 ID: 3xQYLuSPUf
初心者が挫折してしまうのは教師や参考書側の問題が多いんじゃないかなぁ
ポインタ構造体なんて初心者は使わんし、教えなくていい
一気に詰め込もうとするからパンクしてしまう
初めにビット演算を教えてる初心者向け(笑)入門書は何がしたいのか・・・

142ななしのよっしん :2018/12/23(日) 22:58:11 ID: Orp85TEfNn
Cはコンパイラの軽さが身上だから、基本的に言仕様
最初の言に勧めるの頭がおかしい

143ななしのよっしん :2019/04/02(火) 20:54:10 ID: F7dYCq+YV+
大学なら制御系の学科で組み込み関連の実習をやる.
そこでポインタの有難みをヒシヒシと感じる. 自分で設計したのが直に動くのを見ると感動するよ.

144ななしのよっしん :2019/04/25(木) 23:41:48 ID: 7V6NdOBJRb
>>141
本来C言語というのはポインタ操作やバイト列丸見えの構造体やビット演算を使いたい時に使う言なのだよ。だからそれはそれで正しいのだ。問題はCあるあるの「使い所が間違っている」ということなのだ。

#


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ