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

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

ただいまの
回答率

90.33%

  • C

    3991questions

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

構造体宣言

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 294

xxxxxxx

score 32

typedef struct {
  double x;
  double y;
} point_t;

double kyori(point_t p1,point_t p2);


上記のコードはdouble型の変数x,yをpoint_tという構造体として宣言しているという解釈でよろしいのでしょうか?
また、下部のコードは具体的に何をしているのか教えていただけると幸いです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+1

こんにちは。

double型の変数x,yをpoint_tという構造体として宣言しているという解釈でよろしいのでしょうか?

たぶん意味的にはあってます。

double kyori(point_t p1,point_t p2);

「point_t型変数を2つパラメータとして受け取り、double型の値を返却する関数kyori」を呼び出せるように宣言しています。
関数kyoriを呼び出すソース・コードをマシン語へ翻訳する際に必要な情報をコンパイラに教えるための記述です。
呼び出しだけなら中身は知らなくても呼び出せるので中身を書く必要がないのです。
中身はリンクされる範囲の何処かで定義されていれば良いです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/01/26 18:23

    ご丁寧にありがとうございました。

    キャンセル

  • 2017/01/26 18:28

    言語に対する質問なのに必要なことを書かずに関係ないことを書いちゃいました orz
    回答ありがとうございました。

    キャンセル

  • 2017/01/26 18:33

    回答を書いてたら既に解決済みになってました^^;
    typedefは別名定義で構造体の宣言と別名定義を同時に行ってるのが前半、後半はプロトタイプ宣言ですね。

    キャンセル

  • 2017/01/26 18:37

    KSwordOfHasteさん、いえいえ、コードまで書いていただいて本当にありがとうございました。

    キャンセル

  • 2017/01/26 18:37

    PineMatsuさん、すみません。。少し早かったですね。。。
    ありがとうございます!

    キャンセル

  • 2017/01/26 18:45

    KSwordOfHasteさん。
    実は私も最初同じこと書こうとしたのですが、フト、xxxxxxxさんが内容を理解されているような気がしたのでこっちを書いてみました。「やった当たった!」って感じです。

    キャンセル

  • 2017/01/26 18:46

    そうだったんですね(笑)。
    みなさん丁寧にお答えいただいて本当に感謝しかありません。。。

    キャンセル

+1

Chironianさんが適切な回答をしてくださってます。間違いを訂正しておきます。


という解釈でよろしいのでしょうか?

よいと思います。

下部のコードは具体的に何をしているのか

訂正:元の回答は適切ではなく、「プロトタイプ宣言」というべきでした。
以下は元の回答です

この関数は標準提供関数ではないと思うので何をしているかは定義を書かないと分からないと思います。ただ想像はできそうです。多分2つのpoint_tの平面上での距離を出す関数なんでしょうね。こういう定義になっているはずだと思います。

#include <math.h>

double kyori(point_t p1, pioint_t p2) {
  double dx = p1.x - p2.x;
  double dy = p1.y - p2.y;
  return sqrt(dx * dx + dy * dy);
}

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/01/26 18:17

    その通りです。そこで求めた2点間の距離をdouble型として受け取るということですかね?

    キャンセル

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

  • C

    3991questions

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