掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.28128

関数のリターン型について
投稿者---あきき(2006/09/13 00:31:48)


何気なく関数を使っていてふと気がついたのですが、
関数のリターン型がスカラ型である場合は、これはint型,char型だなとすぐに分かりますが、
構造体である場合、たとえば

div_t div( int numer, int demon)

の場合、div_t->qoutやdiv_t->remといったふうに強引に使用できるのでしょうか。
まあ、リターンする変数をまともに返せばいいのですが。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:関数のリターン型について 28129 かずま 2006/09/13 01:19:06


No.28129

Re:関数のリターン型について
投稿者---かずま(2006/09/13 01:19:06)


> div_t->qoutやdiv_t->remといったふうに強引に使用できるのでしょうか。

型名に「->」演算子を適用することはできません。
div() は構造体を返します。
構造体のメンバを参照する演算子は「->」ではなく、「.」です。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("quot=%d rem=%d\n", div(38, 7).quot, div(38,7).rem);
    return 0;
}

構造体へのポインタを返す関数なら、「->」が使えます。
#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t t = time(0);
    printf("%02d:%02d\n", localtime(&t)->tm_hour, localtime(&t)->tm_min);
    return 0;
}



この投稿にコメントする

削除パスワード

No.28148

Re:関数のリターン型について(解決しました)
投稿者---あきき(2006/09/14 00:35:12)


>型名に「->」演算子を適用することはできません。
>div() は構造体を返します。
>構造体のメンバを参照する演算子は「->」ではなく、「.」です。
>構造体へのポインタを返す関数なら、「->」が使えます。

div_tは構造体の型名なのに、それを用いて div_t.qoutやdiv->qoutなどととぼけた使用もしていました。
使用例を見て、すべてがすっきり解決しました。かずまさん、ありがとうございました。





この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧