引数の使い方が分からない
引数の使い方が分からない
引数というのが分かりません
プログラミングの館を見ていたのですが「必要な情報は引数で渡してやればいい」という記事を見たのですが
全く、意味が分かりません 実引数と仮引数という存在、役割は知っているのですが
自分で実装しようと思うと分からなくなります
具体的にはキーボード関数からのフラグ変数をキャラクター関数で受け取り、表示座標をずらす
ということをしたいのですが私が知っている変数の渡し方はkyarakuta(100)こんな感じなのです
これをどう利用すればいいかが分かりません これで合っているのかも分かりません 教えてください
プログラミングの館を見ていたのですが「必要な情報は引数で渡してやればいい」という記事を見たのですが
全く、意味が分かりません 実引数と仮引数という存在、役割は知っているのですが
自分で実装しようと思うと分からなくなります
具体的にはキーボード関数からのフラグ変数をキャラクター関数で受け取り、表示座標をずらす
ということをしたいのですが私が知っている変数の渡し方はkyarakuta(100)こんな感じなのです
これをどう利用すればいいかが分かりません これで合っているのかも分かりません 教えてください
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 引数の使い方が分からない
引数で配列や構造体、更にはポインタを受け渡せるのはご存知ですか?
kyarakuta(100)だとint型の数値のことだと思いますけど。
>具体的にはキーボード関数からのフラグ変数をキャラクター関数で受け取り、
そのフラグ変数がint型なら数値の代わりにkyarakuta(フラグ変数の名前)とするだけですね。それだけの問題ではないということでしょうか?
kyarakuta(100)だとint型の数値のことだと思いますけど。
>具体的にはキーボード関数からのフラグ変数をキャラクター関数で受け取り、
そのフラグ変数がint型なら数値の代わりにkyarakuta(フラグ変数の名前)とするだけですね。それだけの問題ではないということでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 引数の使い方が分からない
いや、それだけの問題ですが分からないのです
すいません、、、引数の渡し方というものが分からないのです
if(右キーが押されたら){
flag=1
}
例えばこんな感じのコードだとしたらどこに引数に関わるものを書けばいいのか分からなくなります
if(右キーが押されたら){
kyarakuta(1)
}
上ではなくこのように書くのが正解なのでしょうか?
そして、これが効率の良い書き方かどうかも分かりません
一々、if文に関数の名前を書くのは良いのかということも知りたいです
すいません、、、引数の渡し方というものが分からないのです
if(右キーが押されたら){
flag=1
}
例えばこんな感じのコードだとしたらどこに引数に関わるものを書けばいいのか分からなくなります
if(右キーが押されたら){
kyarakuta(1)
}
上ではなくこのように書くのが正解なのでしょうか?
そして、これが効率の良い書き方かどうかも分かりません
一々、if文に関数の名前を書くのは良いのかということも知りたいです
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 引数の使い方が分からない
聞かれている点からすると、いつ関数が呼びだされるか把握されていないって気がするのですが理解度を把握したいので、次のプログラムを動かすとどうなると思いますか?
実際に実行せず、想像だけで書いてみてください。
なお、なぜそう思ったのかも書いてみてください。
実際に実行せず、想像だけで書いてみてください。
なお、なぜそう思ったのかも書いてみてください。
#include "stdlib.h"
#include "stdio.h"
int func1(int);
int func2(int);
int func3(int);
int func4(int);
int func1(int a)
{
printf( "func1 a=%d\n",a);
return func2(a);
}
int func2(int a)
{
a -= 1;
printf( "func2 a=%d\n",a);
return a;
}
int func3(int a)
{
printf( "func3 a=%d\n",a);
return a;
}
int func4(int a)
{
printf( "func4 a=%d\n",a);
return a;
}
int main(void)
{
if( func1(1) ) {
func3(func2(2)+1);
} else {
func4(func2(3)+1);
}
return 0;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 引数の使い方が分からない
上に書いたのは、とある関数のコードです。
1)関数の名前は何ですか?
2)引数の名前と型は何ですか?
3)この関数は受け取った引数をどのように操作していますか?
これらがすべて理解できたら、上記関数を呼び出す側のコードを考えてみてはどうでしょうか。
1)関数の名前は何ですか?
2)引数の名前と型は何ですか?
3)この関数は受け取った引数をどのように操作していますか?
これらがすべて理解できたら、上記関数を呼び出す側のコードを考えてみてはどうでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 引数の使い方が分からない
さっぱり分かりませんが予想して書いてみましたsoftya(ソフト屋) さんが書きました:聞かれている点からすると、いつ関数が呼びだされるか把握されていないって気がするのですが理解度を把握したいので、次のプログラムを動かすとどうなると思いますか?
実際に実行せず、想像だけで書いてみてください。
なお、なぜそう思ったのかも書いてみてください。
main関数実行→fanc1に1を渡す→fanc2(1)を返す?→fanc2で1-1を実行→0を返す→
fanc1は(0)なのでelseの方を実行→fanc2(3)を渡して3-1=2を返す→
2+1=3をfanc4に渡す(printfは関数が呼び出される度に実行される)
ほぼ憶測です戻り値に関数の名前が出てくるとどのような処理になるか分からなかった為、
とりあえず関数の名前が出たらその値を渡すことにして考えました
多分、fanc1=1,fanc2=0,fanc3=2,fanc4=3でしょうか?
おそらく私の事なので間違いだらけだと思いますが許してください 悪気はないです
box さんが書きました: int f(int x)
{
return 2 * x + 3;
}
上に書いたのは、とある関数のコードです。
1)関数の名前は何ですか?
2)引数の名前と型は何ですか?
3)この関数は受け取った引数をどのように操作していますか?
[/puote]
関数の名前はfで引数の型はint、名前はx 受け取った引数は2と掛けた後、3と足して呼び出し元に返します
合ってますでしょうか?
Re: 引数の使い方が分からない
はい。likede さんが書きました: 関数の名前はfで引数の型はint、名前はx 受け取った引数は2と掛けた後、3と足して呼び出し元に返します
合ってますでしょうか?
それでは、f関数を呼び出して結果を出力するためのmain関数を考えてみましょう。
まずは固定の数値を渡すところから。
例えば、main関数からf関数に100という数値を渡した結果をmain関数で出力するような
コードを書いてみてください。f関数のコードはそのまま使ってください。
さて、望みどおりの結果(203)を得ることができるでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 引数の使い方が分からない
int f(int x){
return x+103;
}
void main(){
f(100);
printf( "x=%d\n",x);
}
はて?
return x+103;
}
void main(){
f(100);
printf( "x=%d\n",x);
}
はて?
Re: 引数の使い方が分からない
このコードでは、変数xが定義されていません。likeed さんが書きました:int f(int x){
return x+103;
}
void main(){
f(100);
printf( "x=%d\n",x);
}
はて?
Re: 引数の使い方が分からない
int f(int x){h2so5 さんが書きました:このコードでは、変数xが定義されていません。
return x+103;
}
void main(){
int x;
f(100);
printf( "x=%d\n",x);
}
こうすれば良いのかな?
Re: 引数の使い方が分からない
ではお聞きしますが、
このソースではどのタイミングでmain関数内の変数xに
答えが代入されていると思いますか?
このソースではどのタイミングでmain関数内の変数xに
答えが代入されていると思いますか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 引数の使い方が分からない
推測は大正解です。likede さんが書きました:さっぱり分かりませんが予想して書いてみました
main関数実行→fanc1に1を渡す→fanc2(1)を返す?→fanc2で1-1を実行→0を返す→
fanc1は(0)なのでelseの方を実行→fanc2(3)を渡して3-1=2を返す→
2+1=3をfanc4に渡す(printfは関数が呼び出される度に実行される)
ほぼ憶測です戻り値に関数の名前が出てくるとどのような処理になるか分からなかった為、
とりあえず関数の名前が出たらその値を渡すことにして考えました
多分、fanc1=1,fanc2=0,fanc3=2,fanc4=3でしょうか?
おそらく私の事なので間違いだらけだと思いますが許してください 悪気はないです
引数は、こう考えてください。呼び出し先関数の変数に代入する行為だと言うことです。
例えば、func1(1)は()の中の式を計算してfunc1のaに代入してfunc1に制御を移す行為です。
逆に戻る時は、returnの計算式の結果を戻します。
もし、
return func2(a);
を次のように書き換えると
return func2(a+1);
どういう事になるでしょうか考えてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 引数の使い方が分からない
そのコードは実行してみることをお勧めします。likede さんが書きました:int f(int x){
return x+103;
}
void main(){
int x;
f(100);
printf( "x=%d\n",x);
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 引数の使い方が分からない
いつの間に、関数の仕様が変わったんですか?
このトピックにおいては、f関数は、
「引数を2倍して3を足した値を返す」んです。
「引数に103を足した値を返す」んではありません。
C言語でプログラムを作れるようになりたいという強い気持ちがあるのなら、
入門書を買って、最初っから最後まで読み通すことを強くおすすめします。
どんな入門書にも関数や引数について書いてあります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 引数の使い方が分からない
まずはC言語の基本をしっかり押さえることが大事だと思います。
参考書であれば
この辺がよく人気だと話になります。
最近はウェブでいくらでも勉強できますよ
http://www.google.co.jp/#hl=ja&source=h ... c8b08efc39
配列・文字列・構造体・関数この辺りをしっかり学んでからゲーム制作をするか否かで制作効率はかなり変わってくると思います。
頑張って下さい。
参考書であれば
この辺がよく人気だと話になります。
最近はウェブでいくらでも勉強できますよ
http://www.google.co.jp/#hl=ja&source=h ... c8b08efc39
配列・文字列・構造体・関数この辺りをしっかり学んでからゲーム制作をするか否かで制作効率はかなり変わってくると思います。
頑張って下さい。
Re: 引数の使い方が分からない
いつも質問させてもらっているのですが自分にも答えられそうな質問だったので言わせてもらいます
戻り値を出力したいときには何を使うかお分かりですか
Cを習うときに絶対、苦しんで覚えるアレを使えばいいのではないでしょうか?
まぁ自分も初心者なのでこのヒントが効率が良いものかは分かりませんが
多分、結果は期待通りのものになると思います
戻り値を出力したいときには何を使うかお分かりですか
Cを習うときに絶対、苦しんで覚えるアレを使えばいいのではないでしょうか?
まぁ自分も初心者なのでこのヒントが効率が良いものかは分かりませんが
多分、結果は期待通りのものになると思います