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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Q&A

解決済

2回答

1018閲覧

構造体宣言

xxxxxxx

総合スコア50

C

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

0グッド

0クリップ

投稿2017/01/26 09:04

c

1typedef struct { 2  double x; 3  double y; 4} point_t; 5 6double kyori(point_t p1,point_t p2);

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは。

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

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

double kyori(point_t p1,point_t p2);

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

投稿2017/01/26 09:16

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xxxxxxx

2017/01/26 09:23

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

2017/01/26 09:28

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

2017/01/26 09:33

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

2017/01/26 09:37

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

2017/01/26 09:37

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

2017/01/26 09:45

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

2017/01/26 09:46

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

0

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


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

よいと思います。

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

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

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

c

1#include <math.h> 2 3double kyori(point_t p1, pioint_t p2) { 4 double dx = p1.x - p2.x; 5 double dy = p1.y - p2.y; 6 return sqrt(dx * dx + dy * dy); 7}

投稿2017/01/26 09:11

編集2017/01/26 09:49
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xxxxxxx

2017/01/26 09:17

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問