C言語なら俺に聞け 146

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 839f-AnMQ)
垢版 |
2018/04/30(月) 04:47:37.50ID:XX4FB8lc0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2デフォルトの名無しさん (アウアウカー Sadd-wPGC)
垢版 |
2018/04/30(月) 18:40:05.50ID:NF3/uQW/a
1乙
2018/05/01(火) 00:44:35.15ID:+Dd51E210
C勉強してるんすけど、どの方面の分野で活かされそうですか
4デフォルトの名無しさん (ワッチョイ 219f-AnMQ)
垢版 |
2018/05/01(火) 02:49:59.77ID:D2CDUI2h0
組み込み関係、OSやデバイスドライバ作成。及び昔Cで書かれたシステムのデバッグ。
その他、Linux等のUNIX系OSで小規模なツール作る時にも使うかも。
2018/05/01(火) 06:35:10.72ID:74eVqb5T0
もっと高級な言語を使うときに、裏で何やってるか見当がつくようになる、
というのも大きな利点かも。

Cやるならマシン語の知識も…
マシン語の前にTTL回路を…
TTLを理解するためにトランジスタ…
キリがないけどな。
2018/05/01(火) 06:50:33.19ID:FY3WOjcl0
>>5
アセンブラ(アセンブリ言語)ではなくてマシン語、電子回路・論理回路ではなくてTTL回路と言う所から判断して1980年代の8ビットパソコン世代かな
2018/05/01(火) 08:02:05.75ID:74eVqb5T0
>>6 当たらずと雖も遠からず。誤差はプラマイ50年以内。
8デフォルトの名無しさん
垢版 |
2018/05/01(火) 09:19:30.14
>>7
すごいね、おじいちゃん!
2018/05/01(火) 14:46:07.71ID:+Dd51E210
私はCを利用してでど底辺から成りあがりたいんですよ
とにかく人生を向上させたいホームレス予備軍
ツールとして今目下格闘中
2018/05/01(火) 15:01:37.73ID:FY3WOjcl0
実益求めるならJava かPython あたりの方が需要あると思うけどな
今やC言語は学習用の通過点か、あるいはニッチな趣味人のためのプログラム言語だよ
2018/05/01(火) 17:37:53.41ID:74eVqb5T0
さもなければ「Cでプログラムを組んでみせる」が持ちネタのYoutube芸人とか。
現在は何でもエンタテインメント化できる時代らしいから、演出次第だね。

今から地道にやれば学校のプログラミング教育にうまいこと乗っかって
NHK教育で番組持てるかもしれんぞ。
2018/05/01(火) 18:15:30.40ID:bK+upqA80
>>4
lC++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。

C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:

- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)

- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。

言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。

すべての用途にCは適切な選択である!
13デフォルトの名無しさん (ワッチョイ 219f-AnMQ)
垢版 |
2018/05/01(火) 21:03:14.34ID:D2CDUI2h0
>>12
コピペは落ち着いてしろ。
それと Linus のメールの和訳とわかるようにした方が良かろう。
2018/05/02(水) 18:01:54.66ID:R3g8E+PO0
>>13
> Linus のメールの和訳とわかるように

極上のお楽しみを自分で潰すこともないかと
2018/05/02(水) 19:18:05.28ID:intU8xfFa
お楽しみ?
C++信者が釣れるってこと?
この程度で釣れるかなあ?
16デフォルトの名無しさん (ワッチョイ 6b8a-V8ON)
垢版 |
2018/05/03(木) 09:53:31.82ID:bSsMxU7b0
linuxだってglibという"素敵ライブラリ"に完全依存してるけどな
2018/05/03(木) 16:20:53.83ID:ej+jV7h/M
glibに依存してるのはGtk+を使うGUIアプリが主でそれ以外はぼちぼちって感じだぞ
18デフォルトの名無しさん (ワッチョイ bb9f-XJxX)
垢版 |
2018/05/04(金) 05:33:19.95ID:sij7cbOA0
glib ではなく glibc なのでは?
19デフォルトの名無しさん (ワッチョイ bb9f-2OZq)
垢版 |
2018/05/04(金) 05:49:32.75ID:sij7cbOA0
ま、しかし、Linuxはkernelだけでその周りはGNU関係のもので埋め尽くされている。
20デフォルトの名無しさん (ワッチョイ cb96-5xfy)
垢版 |
2018/05/12(土) 10:50:36.15ID:9KHqPvG60
>>2
2otu
2018/05/12(土) 22:35:28.33ID:PPDk2n5SM
LinuxカーネルだってGCC拡張が無いとコンパイル通らないだろ。
22デフォルトの名無しさん (ワッチョイ 259f-klMC)
垢版 |
2018/05/13(日) 03:30:03.29ID:YKXy/MBP0
そだねー
23デフォルトの名無しさん (ササクッテロロ Sp21-4Ye1)
垢版 |
2018/05/14(月) 21:02:48.20ID:/gxAL6M9p
3次元配列を動的に確保する際に、メモリ領域を連続にする以下の処理について解説をいただければと思います。
全部わからないのですが、とくに矢印のところがわかりません。
// メモリ領域が連続な2x3x4の配列
int ***d = (int***)malloc(2 * sizeof(int**));
d[0] = (int**)malloc(2 * 3 * sizeof(int*));
d[0][0] = (int*)malloc(2 * 3 * 4 * sizeof(int));
for (int i = 0; i < 2; i++) {
d[i] = d[0] + i * 3; ←不明
for (int j = 0; j < 3; j++) d[i][j] = d[0][0] + i * 3 * 4 + j * 4; ←不明
}

// 解放
free(d[0][0]);
free(d[0]);
free(d);

よろしくお願いいたします。
2018/05/14(月) 23:35:56.77ID:Tfg/PkXw0
>>23
その本は捨てておk
2018/05/15(火) 00:01:48.63ID:1kH4gY7r0
>>23
それが載っていた本の著者とタイトル教えて
26デフォルトの名無しさん (ワッチョイ 55b3-4Ye1)
垢版 |
2018/05/15(火) 00:36:08.09ID:7fXm/AVB0
>>25
個人のサイトになります。
「連続したメモリ領域を持つ多次元配列」で検索して最初に見つかるページです。
2018/05/15(火) 00:47:49.82ID:p8+U0bQkd
一次配列で確保して、インデックスで多次元配列のように使うのが一手かな。

int *pi = (int *)malloc(2*3*4);
#define MULTIARRAY(i0, i1, i2) \
pi[((i0) * 3 + (i1)) * 4 + (i2)]

これだと区間チェックがないから、本番ではもっと改良が必要だけど。
2018/05/15(火) 00:48:58.20ID:p8+U0bQkd
>>27
訂正。
int *pi = (int *)malloc(2*3*4*sizeof(int));
です。
2018/05/15(火) 00:52:28.34ID:1kH4gY7r0
>>26
そのサイトは酷い勘違いをしている
あるいは故意に間違えたソースを書いている
2018/05/15(火) 00:53:21.99ID:p8+U0bQkd
allocaが使えるなら、解放の手間も省ける。
2018/05/15(火) 00:56:18.63ID:p8+U0bQkd
C99なら、動的に配列サイズを指定できるから、そんな汚いコードを書く面倒は要らない。
2018/05/15(火) 00:57:32.82ID:p8+U0bQkd
グーグル八分やっちゃい魔性
2018/05/15(火) 01:04:46.59ID:Qrh/McUF0
>>26
Cでここまであからさまに間違えているのも今時珍しいが、
そもそもその程度の個人サイトなんて見る価値無いからやめとけ。

その次の検索結果の以下とか、図もあるし、その件についても解説されてるし、そっち読め。
http://www.ibe.kagoshima-u.ac.jp/edu/gengo0/p12.html

見分け方を教えておくと、
10-20行程度のソースをさも一生懸命書いた=初心者レベルと分かるだろ。
Cは歴史も長いからガチの解説サイトも大量にある。
逆に言えば、ガチで解説してないところは全部ゴミ扱いでいい。
あと、メンテされてるかも見ろ。具体的には日付な。
2018/05/15(火) 01:05:40.78ID:p8+U0bQkd
処理完了。皆の者、乙。
2018/05/15(火) 01:11:00.87ID:p8+U0bQkd
計算機の安全と、プログラマーの業務を守るための意義のある戦いであった。
36デフォルトの名無しさん (ワッチョイ 55b3-4Ye1)
垢版 |
2018/05/15(火) 01:11:18.49ID:7fXm/AVB0
>>26です。
皆さんありがとうございます。
ガチの説明が書いてあるサイトを検索してみます。教えていただいたサイトも見てみます。
2018/05/15(火) 01:16:31.94ID:Qrh/McUF0
>>36
33のサイトは鹿児島大学だけど、おそらく大学がいいと思うぜ。理由は以下。
・入門者のレベルに合ってる
・どこの大学にも入門講座はある
・毎年使われる=メンテされてる

まあがんばれ。
2018/05/15(火) 01:45:28.10ID:BF34cu+AM
大学っつうても、研究室のお遊びブログ的なのはだめだぞ
2018/05/15(火) 01:48:53.87ID:p8+U0bQkd
大学だってちゃんと社会貢献してる。
でも最近は高過ぎるし、多すぎる。
2018/05/15(火) 01:52:58.39ID:p8+U0bQkd
大学ジェノサイドを宣言します。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況