教えてください。

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

教えてください。

#1

投稿記事 by 初心者 » 18年前

void main()
{
int p;
int ret;


}

関数point_set()を作成し、main関数からpoint_set()の呼び出しを行いpoint_set()の関数でpに100を入れる。
又、point_set()を呼び出す前後でpの値を表示しなさい。(よろポインタを使う事)
よろしくお願いします。

Yuki

Re:教えてください。

#2

投稿記事 by Yuki » 18年前

こちらのHPの(2)アドレスによる渡し を熟読していただければヒントがあると思います。
http://www9.plala.or.jp/sgwr-t/c/sec11-2.html

初心者

Re:教えてください。

#3

投稿記事 by 初心者 » 18年前

サイトを見て自分なりにしてみました! これで正しいでしょうか?

#include <stdio.h>

int point_set();

int main(void)
{
int *p;
int ret;

ret=0;
p=&ret;
printf("最初のpの値を表示します\n");
printf("p=%d\n", *p);

*p=point_set(&p);

printf("変更後のpの値を表示します\n");
printf("p=%d\n", *p);

return 0;
}

int point_set(int *x)
{
*x=100;

return *x;
}

box

Re:教えてください。

#4

投稿記事 by box » 18年前

> サイトを見て自分なりにしてみました! これで正しいでしょうか?

もし、お手元にコンパイル・実行できる環境があるならば、
まずはご自分で確かめてみてください。

初心者

Re:教えてください。

#5

投稿記事 by 初心者 » 18年前

すみません^^; 一様コンパイルができ、結果も表示されたのですが、これでいいのか不安だったので・・・。

box

Re:教えてください。

#6

投稿記事 by box » 18年前

> 一様コンパイルができ、結果も表示されたのですが、これでいいのか不安だったので・・・。

一様じゃなくって「一応(いちおう)」です。それはさておき、
くだんのコードをBorland C++ Compilerでコンパイルすると、

警告 W8065 D:\My Programs\C\temp1\temp1.c 15: プロトタイプ宣言のない関数 'point_set' の呼び出し(関数 main )

という警告が出ました。これは、コードの3行目にあるプロトタイプ宣言

int point_set();

で、カッコの中に引数の宣言がないからです。そこで、

int point_set(int *x);

と修正したところ、今度は

警告 W8075 D:\My Programs\C\temp1\temp1.c 15: 問題のあるポインタの変換(関数 main )

という警告が出ました。これは、コードの15行目で

*p=point_set(&p);

と書いているカッコの中がint **型であり、point_set関数の実際の引数の型と
異なっているからです。この警告を無視して実行してみたところ、
プログラムが異常終了しました。

さて、こういった風に、くだんのコードにはいろいろと問題があります。
「結果が表示された」というのが、私にはにわかに信じがたいです。

閉鎖

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