質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • C

    3692questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C言語って何ができるんですか?

受付中

回答 5

投稿

  • 評価
  • クリップ 1
  • VIEW 464
退会済みユーザー

退会済みユーザー

最近C言語の勉強をはじめ、高橋麻奈さんのやさしいCをやりました。
構造体とかポインタなどの機能についての基本的な知識は得ることができましたが、それで何ができるのか分かりません。
もちろんコンソールアプリケーションしか作れない言語ではありませんよね。
具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。
あとそれについてのおすすめの書籍、サイトなどがあればそれもお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+7

こんにちは。

具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。

コンピュータ・プログラミングについてC言語で開発できないソフトウェアはほとんどないと思います。
一部アセンブラを使ったり言語の標準ではなく拡張機能をつかったりすることはありますが。
Androidの基本部であるlinuxのカーネルはC言語で記述されています。他にもC言語で記述されているソフトウェアは星の数ほどあります。

あとそれについてのおすすめの書籍、サイトなどがあればそれもお願いします。

だがしかし、アセンブラと同様に既にC言語も適用される範囲はかなり限定されつつあります。
小型マイコンやOSのカーネルのプログラムが主ではないかと思います。残りは元々C言語で書かれていて、それをC++やその他の言語へ移植するのが厳しいためそのままC言語でメンテナンスしているものでしょう。
つまり何が言いたいかというと、C言語を目的として勉強することはあまりお勧めできませんのでお勧めの書籍も「ない」ということです。
なお、他の言語を勉強する取っ掛かりとしてC言語を勉強することには賛成です。かなり多くの言語の構文へ影響していますし、ポインタの概念は非常に重要な概念ですから、その学習に注力できる点で優れています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

もちろんコンソールアプリケーションしか作れない言語ではありませんよね。

理論上は、環境に応じたAPIを呼び出すことで、GUIアプリを作ることも可能です。ただし、

  • GUIライブラリはC言語の標準ではないため、環境ごとのライブラリ、あるいはクロスプラットフォームのライブラリを用意して書く必要がある
  • (GObjectのようにC言語を魔改造レベルで拡張してオブジェクト指向化して使っている例もあるけど)オブジェクト指向でないC言語では、ウィンドウシステムの扱いが煩雑になる
  • GUIアプリケーションで決まったウィジェットを描画する部分はパフォーマンスが要求されるわけでもなく、スクリプト言語やC#のようなツールのほうが生産性が圧倒的に高い

などの事情もあって、「C言語でGUIアプリケーションを作る」ということはあまり積極的に行われるものではありません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。

今どきわざわざ開発効率の悪いC言語が選定されるシーンというのは限られていますが、最近流行りのIoTの世界ではハードの制約上Cを使わざるを得ないことが多いです。
私も昨年そういう開発に携っていましたが、メモリはそもそも32キロバイトしかありませんでしたし、消費電力を減らすためにCPUクロックを32kHzまで落とす場面もあり、JavaやC#はもちろんC++すら動かす余裕が無いため仕方無くC言語で開発していました。
そういうデバイス開発に興味をお持ちでしたらその分野ではC言語はいまも現役バリバリですので勉強する価値はあると思います。

その場合、

  • プログラムが動作する際CPUやメモリ等をどのように使っているのかというコンピュータの仕組みについての知識
  • UARTやI2C等の通信の仕組みについての知識
  • 抵抗・コンデンサ・インダクタ・トランジスタ等の役割がわかる程度の電気回路の知識

等々、C言語以外の知識が必要なように思います。

或いは、C#等の高級な言語で開発する上でもC言語の知識は有用ですので勉強しても無駄にはなりません。
これは後々必要になってから勉強しても良いのですが、最初に楽なものから入って後からしんどいもの・めんどくさいものを勉強するのは大変かも知れません。
C言語のめんどくささが当たり前の状態でJavaやC#に触れると
「え?今までのアレはやらなくていいの?」
という具合に楽に感じることが多いですが、逆は
「え?今までそんなことしなくてよかったのにC言語はいちいちそんなことしなくちゃいけないの?」
という捉え方になり最初にCを勉強するよりめんどくさく感じると思います。


  • CPU等各種ハードウェアに近い層のプログラムには興味が無い
  • 「どんなプログラムを書くか」より「何を作るか」の方がずっと大事だと思う

というのであれば、C言語の勉強以外に時間を使う方が有意義です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

なんでもできます。
が、これから学んでいくならC#にしなさい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

なんでもできる言語なのでやりたいことを直接的に書いたほうが答えを得られると思います

Cの使い方はわかったら次はフレームワークやライブラリの使い方を勉強したほうがいいです
ゲームが作りたいのであれば、libsdlを使うといろいろな環境でグラフィックや音を扱うことができます
サーバーを作りたいのであればbsd socketですかね

webやandroid等のシステムを作りたいのであればC言語で作るのはやめたほうが良いと思います(もっと簡単に作れる言語が他にありますので)

他の言語を使ったからといってC言語を全く使えないというわけではなくC言語を使わないとできないこともあるので
一部をCで書くということもできます(javascriptではwasm、c#ではC言語で作ったDLLライブラリを呼び出すなど)

WEBやGUIなどの人間が直接触ることが多い箇所でC言語を使う場面は最近はめっきり減ってメモリ管理やモジュール管理について人間が楽ができる他の言語でやることが多いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C

    3692questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

閲覧数の多いCの質問