ページ 11

アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 12:30
by mossa
Cプログラムのアリゴリズムに関する参照渡しのプログラムなのですが
foo(int a,int b,int *sum,int *prod)
{
*sum=a+b;
*prod=a*b;
}
のプログラムfoo()とfoo()を動かすmain()のサンプルを作成する
という問題なのですが、途中まで考えることができましたが
void main()[
intx=0; int y=0;
foo(2,5,?,?);  //xとyのアドレスを第3,4引数に渡すのをどうすればいいのか
printf("%d,%d\n",x,y) //ここのxとyが知りたい
}
ということです。
よろしくお願いします。

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 12:43
by Blue
アドレス演算子「&」をつけてください。

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 13:29
by hss12
foo(2, 5, &x, &y);
で良いと思いますが、それ以外の場所で数か所ミスがあり動かないと思います。

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 13:30
by BEMANI
>>mossaさん
コンパイル通らないので一応念のために・・・

foo(int a,int b,int *sum,int *prod)
と書いてありますが、戻り値の型が指定されていません。
見た感じ戻り値は必要ないと思うので
void foo(int a,int b,int *sum,int *prod)
にしておいて下さい。

void main()[
と書いてありますが、 [ ではなく { ですのでそこも変えて下さい。

最後、セミコロンを忘れているのでそれも追加して下さい。

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 13:35
by hss12
intx=0;

int x=0;
とスペースを空けないとダメです。
あと全角スペースは使えません。

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 16:23
by mossa
#include<stdio.h>

 int main(){
	int x=0;
	int y=0;
	foo(2,5,&x,&y);
	printf("%d,%d\n",x,y);
}
と直したのですが、まだ間違いがあり、ビルドできませんでした。
fooの識別子とは?int型、void型でも違いました・・。

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 16:27
by Blue
#include<stdio.h>

void foo(int a,int b,int *sum,int *prod)
{
	*sum=a+b;
	*prod=a*b;
}
 int main(){
	int x=0;
	int y=0;
	foo(2,5,&x,&y);
	printf("%d,%d\n",x,y);
}

Re:アリゴリズムの参照渡し

Posted: 2009年4月20日(月) 21:06
by 初級者
念のため、xとyをゼロで初期化しておく必要はありません。

誤:アリゴリズム
正:アルゴリズム