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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# これの答えは5になるとおもいます。 1 2021/11/08 10:47
- C言語・C++・C# C#のラムダ式に関する質問です 2 2021/12/19 23:04
- C言語・C++・C# C#のコンパイルエラーCS0120に関する質問です。 1 2021/12/21 08:51
- C言語・C++・C# 関数へのポインタを返す関数 2 2022/02/05 22:12
- C言語・C++・C# C言語の問題です。大至急回答お願いします 次の条件を満たすキュー・プログラムを作成せよ。 ①キューに 1 2021/12/05 01:35
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語の問題です。 1 2021/12/22 02:57
- C言語・C++・C# C言語です 2 2023/10/16 01:43
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
C言語で、変数名を引数として渡す方法と、アドレスを引数として渡す方法
C言語・C++・C#
-
ポインタの宣言方法
C言語・C++・C#
-
gcc13.2のバグ?
C言語・C++・C#
-
-
4
C言語について。
C言語・C++・C#
-
5
C言語 バッファについて。
C言語・C++・C#
-
6
C言語関数違いについて。
C言語・C++・C#
-
7
C言語です
C言語・C++・C#
-
8
C言語って古いですか?
C言語・C++・C#
-
9
VisualStudio2022でC言語プログラムで全角文字を使用すると不明なエラーが表示される
C言語・C++・C#
-
10
これなにがちがうんですか??
C言語・C++・C#
-
11
C言語の関数と配列に関する質問
C言語・C++・C#
-
12
C言語 バッファについて。
C言語・C++・C#
-
13
C言語について。
C言語・C++・C#
-
14
C言語について。
C言語・C++・C#
-
15
バッファリングについて。
C言語・C++・C#
-
16
パイソン。If elseの挙動について教えてください。パソコンは、if else で、まずifに当て
C言語・C++・C#
-
17
Javaって使いますか、もう古いですか?C++とどっちがいいですか?分析でC++使う授業ありましたけ
C言語・C++・C#
-
18
C言語について。
C言語・C++・C#
-
19
コマンドプロンプトについて。
C言語・C++・C#
-
20
C言語 バッファについて。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
std::set<int> で、ある値が何...
-
「指定されたキャストは有効で...
-
数字列を3桁ごとにカンマで区切...
-
比較回数と交換回数表示について
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
実数の整数部,小数部の取得
-
c言語
-
C言語
-
卒業研究でよく分からないとこ...
-
main関数以外での結果の表示?
-
各桁の和を返す関数
-
C言語での引数の省略方法
-
(int *)の意味
-
C++でvectorにテキストファイル...
-
if文について
-
プログラミング c言語
-
マルチスレッドでバグが発生します
-
【C++】関数ポインタの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報