xを変数名を引数として渡し、yをアドレス引数として渡します。
関数 func_add内で1を加算します。
以下のソースコードで大丈夫ですか。
大略のみ書いており、細かな部分は削除しています。
void func_add(int x, int *y)
{
x = x + 1;
&y = &y + 1;
}
int main(void)
{
int x = 1, y = 1;
printf("x = %d\n", x); →xに格納されている値を出力する
printf("y = %d\n", y); →yに格納されている値を出力する
func_add(x, &y);
return 0;
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
駄目ですね。
>void func_add(int x, int *y)
>{
> x = x + 1;
> &y = &y + 1;
>}
x = x + 1;
引数はローカル変数の一種なので、これでは結果が
どこにも残らない。まあ x を使うコードが省略されているのかも
しれないけど。
&y = &y + 1;
これはコンパイルエラーになるはず。
ポインタ値は左辺値(変数のようなもの)
じゃないからね。
これは
*y = *y + 1;
のつもりかな?
No.3
- 回答日時:
> xを変数名を引数として渡し、yをアドレス引数として渡します。
文字通りの意味で「変数名を引数として渡す」は不可能ですし、
「アドレス引数」というものはありません。
お書きのコードでなされているのは、
・変数の値を引数として渡す(xのこと)
・変数のアドレスを引数として渡す(&yのこと)
です。
お書きのコードだと、
・xに1を、yにも1を代入
・その値つまり1をprintfで2回出力
・関数を第一引数を1、第二引数をyのアドレスで呼び出す
・呼び出された関数で、
・仮引数の第一引数に1を足す(これはmainのxとは無関係)
・仮引数の第二引数であるアドレスの変数に1を足す(つまりyに1を足す)
ですね。
No.2
- 回答日時:
func_add()に渡している第一引数の意味は?
元のソースの場合、xに1加算しても関数を抜けた瞬間に何も無かったことになります。
yのアドレスを渡して1加算するだけなら以下のようにすれば良いだけ。
void func_add(int *y)
{
*y = *y + 1;
}
No.1
- 回答日時:
func_addを実行してもxは関数内のスコープでいじってるだけだから意味がない。
この関数を実行しても引数xは実行後に変化しない。yは参照渡しなので関数実行後に変化するが、yの値を1インクリメントしたいなら*y=*y+1の記述にすべき。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
std::set<int> で、ある値が何...
-
C言語です。
-
C言語 エラーの原因がわからな...
-
C#の1~Xまでの数値を徐々に...
-
C言語でlookupのような関数って?
-
ポインタを使って関数の値の...
-
DirectX ~テクスチャに値を書...
-
C++でRPGを作成する際のステー...
-
C++でvectorにテキストファイル...
-
int型とfloat型の演算結果
-
入力された数字を大きい順に並...
-
「指定されたキャストは有効で...
-
C言語、多次元の配列を関数の引...
-
C++、関数の作り方、呼び出...
-
(int *)の意味
-
int16_t の _t は何?
-
C言語 逆順の配列の仕方を教え...
-
C言語 巡回セールスマン問題 2-...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
複数桁10進数の*桁目だけを抽出...
-
【C++】関数ポインタの使い方
-
std::set<int> で、ある値が何...
-
ラップ関数とはどんなものですか?
-
実数の整数部,小数部の取得
-
if と配列の組み合わせ
-
「{ } で囲むだけ」は正しい?
-
return 1L
-
足して100になるような乱数のア...
-
C言語
-
(int *)の意味
-
構造体の勉強中です 合計点の高...
-
C言語で分からないところがあり...
-
system関数がうまくいかない
-
PowerShellがうまくいかない
-
課題でつまってます・・・
おすすめ情報