• ベストアンサー

JavaからCへ

僕は今までJavaを勉強していたのですが、 つい最近になって、C言語に手をつけ始めました。 Javaを知っていればC言語は結構とっつきやすいのではないかと思って始めたのですが、Javaに慣れすぎたせいか、C言語の文法がどうもしっくりきません。 特に関数あたりが・・・・。 C言語の関数って、Javaでいうところのメソッドですよね? 僕はそのように解釈しているのですが、あまり自信がないので、ご存知の方がいましたらどなたか教えてください。 あと、Javaを学習した人のためのC言語の本、もしくはC言語を学んだ人のためのJavaの本がありましたら教えてください。

  • Java
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • MMPichu
  • ベストアンサー率66% (4/6)
回答No.3

こんにちは。 CからJavaという人がほとんど(私もそう)だと思うのですが、逆もいらっしゃる のですね。今はJavaが前面に出てきてしまっているからそうなのかな? Javaは最初に覚える言語としてもよい言語ですしね。 文法自体はほとんど同じですよね。 おっしゃる通りC言語の関数はJavaのメソッドにあたります。 クラスという考え方はありませんが、別ファイルであっても1つのクラス中に メソッドをたくさん羅列して記述するようなイメージだと思います。 だから同じ名前の関数はあってはいけません。 あと、C言語の肝は何と言ってもポインタでしょう。諸刃の剣となるおそれも ありますが、C言語ではなくてはならない非常に大事なポイントです。 本は「JavaプログラマーのためのC言語入門」があります。 下記のURLです。このHPでも結構解説していますよ。 頑張ってください。

参考URL:
http://www.javaopen.org/jfriends/cforjava
fumi11
質問者

補足

そうですね。ポインタがやまですよね。 ついさっき、こないだ買ってきた本でポインタの所を読んでいたんですけれども、読み進めていくうちに段々いらいらしてきて、結局こうしてネットに逃げてきてしまいました。(笑) MMPichuさん、 分かりやすいご説明、そして今の僕がとても必要としている本、サイトを御紹介していただき本当にありがとうございました。

その他の回答 (2)

  • xinman
  • ベストアンサー率30% (25/83)
回答No.2

>C言語の関数って、Javaでいうところのメソッドですよね? >僕はそのように解釈しているのですが、あまり自信がないので、ご存知の方がいましたらどなたか教えてください。 この考え方でOKです。 この場合、Javaのクラスにあたるものが、C言語で作成されたプログラム全体でひとつのクラスと考えればよいでしょう。 C言語のプログラムには、main関数、他の関数、グローバル変数などがありますが、 Javaのプログラムでは、mainメソッド、他のメソッド、フィールドに対応しているものと考えてみましょう。 >Javaを学習した人のためのC言語の本、もしくはC言語を学んだ人のためのJavaの本がありましたら教えてください。 ゴメンナサイ。こちらについては、わからないので他の回答者に任せます。

fumi11
質問者

補足

うおっ、わかりやすい!! やはり、関数=メソッドと解釈してよかったんですね。 ん?そういえば、少し前にSwingに関するコンストラクタについて質問をしたことがありましたが、その時も確かxinmanさんが分かりやすく答えてくれたような気が・・・。またまたお世話になっちゃいましたね。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

C言語ってクラスという考えが無いんですよね。C++なら有るんですけど・・・ メソッドが羅列してある。 メンバ変数は無いのでグローバル変数、もしくは構造体にする。 私もあまりJavaはやってないのでこんな感じでしょうか?

関連するQ&A

  • C#のdelegateをC++とjavaで?

    C#のデリゲードを javaとC++でできないでしょうか。 ただし、質問内容を勘違いされそうなので、求めている内容と、 求めていない内容を、詳しく 書きますと。 インタフェース委譲を使った例は、求めていません。 あらかじめ、委譲先に静的に仕組みを 作っておかなく手も、C#のデリゲードのように、シグニチァが同じなら 委譲先をはめ込めれるのが欲しいです。 単なる関数ポインタの例は、求めて いません。 C#でdelegate型を引数にとる ところに、あるインスタンスの メソッドを渡すと。 どのインスタンスのどのメソッドかまで、 認識して、コールバックできます。 関数ポインタでは、これができない。 STLの関数オブジェクトとか、古い感じの情報にヒントがあるか。調べてみましたが。よくわかりませんでした。 結局、この関数オブジェクトは、僕が求めているモノとは、違うような気がします。 よくわかりませんが。 欲しいのは、どのインスタンスのどのメソッドかまでを特定して、 記憶できる型をどうやって javaや、C++で実装できるか。 それをインタフェース委譲のように、 委譲先にあらかじめ、仕込んでおくことなしに。 ただ、メソッドのシグニチァが同じであるだけで、どのインスタンスのどのメソッドかまでを特定して記憶できる C#のデリゲードのような型を。 特殊なコンポーネントを利用せず。 標準的な言語構文のみをつかって、 どのようにしたら、 javaや、C++で、実装できるか? です。 詳しい方が、いらっしゃいましたら、 教えてください。

  • Cに慣れてしまった人、どのようにJAVAを克服しましたか?

    JAVAについて質問です。 私はC言語をこの1年間勉強してきました。 そしてC言語のコーディングの仕方に慣れきってしまったせいか、どうしてもJAVAのオブジェクト指向 というものが理解できません。 コーディングも上手くいきません。 クラスやメソッドやインスタンスがどうとかコンストラクタが・・・などの横文字が全然意味が分かりません。 C言語で言うとどれがどこに当たるのか!? とかいう風に置き換えて考えようとしても上手く行きません。 こういう、横文字が理解できて、オブジェクト指向の考え方に慣れる為にはどのようにしたらいいでしょうか? また、C言語からプログラミングに入って、後からJAVAを勉強する場合、どのような点に気をつければ良いでしょうか? また、JAVAの克服法を教えてください。

    • ベストアンサー
    • Java
  • JavaとC++はどう似てる?

    はじめまして。 最近Javaの勉強をしているのですが、やはりC言語に憧れがあります。 昔Cを少しだけやったのですが、さっぱり分かりませんでした。 このままJavaが使えるようになればC言語も楽に覚えられるのでしょうか?

  • Javaで

    C言語ではUNIX上のコマンドを呼ぶには System("呼びたいコマンド");とすればコマンドがプログラムから呼べたと思います。Javaで同じようにUNIX上のコマンドを呼ぶ関数(メソッドっていうのかな?)はなんですか?

  • Javaで

    相手のコンピューターにこっちにあるプログラムとかを実行してもらえますか? たとえばC言語で書いたプログラムの実行ファイル a.outがあったとします。 そして相手のコンピュータにipアドレスを指定して この実行ファイルを実行してもらうようなコマンドとかjavaのメソッドとかC言語の関数とかありますか? JavaやC言語でなくてもそのような方法があるならどれでもかまわないので教えてください。

    • ベストアンサー
    • Java
  • 大学でC言語やJava等を習いました.

    大学でC言語やJava等を習いました. 次のセメスターからは手続き型言語とは違う SMLという関数型言語を講義を履修しなければならないようなので, 春休み中に勉強しておこうかと思いました. しかしSMLを少しかじってみたのですが関数型言語は代入という概念もなく 数学のような感じであまりおもしろくないと感じ,関数型言語を学ぶ意欲が少し無くなってしまいました. そこで関数型言語を学ぶ意義についてどなたか教えていただけないでしょうか? よろしくおねがいします.

  • Javaの勉強の仕方について

    これからJavaをもっと勉強していくにあたり、質問させていただきます。 今自分のレベルとしては、C言語などの経験もあり、 ・Javaの基本的な文法やルール、概念の理解、記法は身につけた。 ・SwingなどのGUIについてはノータッチ の状況です。 今、これからもっとJavaでいろいろなプログラムをかけるようになるためには、どのような勉強方法をすればよいのかわからないのです。 『どのような本を使って、どういう風に勉強すればいいのか』が知りたいです。特に、どういう本を使えばよいのか、がわかりません。 何か、Javaのプログラミング問題集のようなものを手にいれ、それで打ち込む練習を重ねるのでしょうか。それならば、おすすめの問題集などはありますか? 個人的な意見でも構いません。 Javaを学んでいく、貴殿なりのスキルアップするための勉強術・勉強理論を教えてください。 お願いします。

  • 中学生でいきなりJava

    14才の中学2年男子です。 いきなりC言語ではなくJavaを勉強してしまいました。 今は配列辺りを勉強してるのですが、 やはりこの歳で配列辺りの勉強は遅れてますか? もしかして、初めて勉強する言語自体が間違ってますか…? 最近ネットで僕より一つ歳上でセキュリティキャンプや 情報オリンピックに参加してる子を知って不安になって来ました。 やさしいJavaと言う本を参考に読んで行ってるのですが、 Javaはどの辺りくらいまで勉強すればゲームやグラフィカルなアプリケーションの様な物は作れる様になるのですか?

  • Javaの仕事したいのにC言語を・・・・・これでいいのか・・・・?

    今再就職に向けて、プログラムの勉強をしているんですが、言語はC言語です。でも、最初は(本当は)Javaを勉強したかったのです。でも、都合の関係やJavaをやる前にC言語をやっておいたほうがJavaに入りやすいと聞きC言語を今やっています。 C言語のほうは参考書でいえば半分以上は進み終わったのですが、Javaのほうは3分の1位しか進んでいません。 演算子くらいまでです。 再就職の際にJavaを使った仕事を希望何のですが、このままC言語をやっていていいのか疑問に感じ始めました。 前の会社を辞めて半年近く経ち、そろそろ就職もしないといけないし、C言語に関しては独学ですが勉強したとまだ言えますが、Javaはまだほとんど進んでいないし。 Javaを使った仕事希望ならJavaにも時間を使ったほうがいいのか、それとも、Javaに時間を使わず、C言語にその文の時間を費やして、C言語を少しでもレベルアップできるようにしていったらいいのかわかりません。 どなたかアドバスを頂けませんか。宜しくお願いします。

    • ベストアンサー
    • Java
  • JAVAからC/C++にシフトしたいのですが・・・

    はじめまして。 質問があります。 JAVAを4年ほどやってきたのですが、理由があってC/C++ を学習することになりました。GoFに関するパターンやマルチスレッ ドに関する知識は、C/C++でも生かせるでしょうか? JAVAはオブジェクト指向言語なので、ある程度はC++を理解 する分にはつぶしがきくとは思うのですが、甘いでしょうか? どうかアドバイスをお願いします。