intと*

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
blue

intと*

#1

投稿記事 by blue » 15年前

問題 
1を入力すると「Jan」、2を入力すると「Fed」というように、そのつきの名前を返すプログラムを文字列の配列を利用して作ってください。

答えのソース↓(//~~の部分は今回わからないところ)

/* program82.c */


#include <stdio.h>

char *mon(int);  //*mon(int *)じゃだめなのか、なぜ(int)なの?

int main()
{
int n;

while (1) {
printf("1-12の数字(0で終了)--- ");
scanf("%d", &n);
if (n == 0)
break;
printf("%s\n", mon(n - 1));
}

return 0;
}

char *mon(int n)  //なぜ*をつけるの?
{
char *month[/url] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec"};
return month[n];
}

やっくん

Re:intと*

#2

投稿記事 by やっくん » 15年前

どの程度理解されているかわかりませんので回答し辛いですが・・・。

mon関数で何をしているか、というのを理解できれば分るかと思います。
mon関数では、1引数で"整数型"の値を受け取りそれに対応した月を"文字列"で返しています。

int*でないのは、関数にポインタで渡す必要が無いからです。
関数で値を書き換えたいわけでもないし、配列を渡したいわけでもないので。

mon関数の戻り値をchar*とするのは関数の目的である文字列を返すからです。

閉鎖

“C言語何でも質問掲示板” へ戻る